laravel eloquent 选择动态

我正在尝试select根据if-else条件逻辑动态列。


 $records = DB::table('dmf_result_set_assign as rsa')

                ->select(

                    'pmu.s_image_url', 'pmu.r_image_url', 'pmu.r_image_url_main', 'pmu.product_sku', 

                    'pmu.product_name', 'pmu.product_id', 'pmu.ai_result', 

                    'pmu.confidence_score', 'pmu.request_id',

                    if($distinct_only_flag) {

                        DB::raw('DISTINCT pmu.hash_id'),                            

                        'pmu.run_date_id',

                        'pmu.s_product_url',

                        'pmu.r_product_url',

                        'pmu.s_price',

                        'pmu.s_mpn',

                        'pmu.s_upc',

                        'pmu.s_asin',

                        'pmu.s_gtin',

                        'pmu.s_variant_info',

                        'pmu.s_brand',

                        'pmu.s_category',

                        'pmu.s_description'

                    } else {

                        'pmu.hash_id',

                        'fr.filter_name',

                        'rsa.human_verdict', 'rsa.assigned_to', 

                        DB::raw('CONCAT(usr.first_name, " ", usr.last_name) as cloud_user')

                    }

                )

                ->join('dmf_product_match_unmatches as pmu', DB::raw('BINARY `pmu`.`hash_id`'), '=', 'rsa.hash_id')

                ->join('dmf_filter_rules as fr', 'fr.id', '=', 'rsa.filter_rule_id')

                ->leftjoin('dmf_user_tokens as tkn', 'tkn.id', 'rsa.assigned_to')

                ->leftjoin('users as usr', 'usr.id', '=', 'tkn.user_id')

                ->get();

我收到此错误:


(1/2) FatalThrowableError

Parse error: syntax error, unexpected 'if' (T_IF)

我无法弄清楚这个问题。两者看起来很相似,但其中一种有效,另一种则无效。


还有其他方法可以实现此目的吗?


DIEA
浏览 93回答 1
1回答

慕勒3428872

你可以使用 addSelect 方法来做到这一点:$records = DB::table('dmf_result_set_assign as rsa')            ->select(                'pmu.s_image_url', 'pmu.r_image_url', 'pmu.r_image_url_main', 'pmu.product_sku',                'pmu.product_name', 'pmu.product_id', 'pmu.ai_result',                'pmu.confidence_score', 'pmu.request_id',            )            ->join('dmf_product_match_unmatches as pmu', DB::raw('BINARY `pmu`.`hash_id`'), '=', 'rsa.hash_id')            ->join('dmf_filter_rules as fr', 'fr.id', '=', 'rsa.filter_rule_id')            ->leftjoin('dmf_user_tokens as tkn', 'tkn.id', 'rsa.assigned_to')            ->leftjoin('users as usr', 'usr.id', '=', 'tkn.user_id');        if ($distinct_only_flag) {            $records = $records->addSelect(DB::raw('DISTINCT pmu.hash_id'),                'pmu.run_date_id',                'pmu.s_product_url',                'pmu.r_product_url',                'pmu.s_price',                'pmu.s_mpn',                'pmu.s_upc',                'pmu.s_asin',                'pmu.s_gtin',                'pmu.s_variant_info',                'pmu.s_brand',                'pmu.s_category',                'pmu.s_description');        } else {            $records = $records->addSelect('pmu.hash_id',                'fr.filter_name',                'rsa.human_verdict', 'rsa.assigned_to',                DB::raw('CONCAT(usr.first_name, " ", usr.last_name) as cloud_user'))                    }        $records = $records->get();
打开App,查看更多内容
随时随地看视频慕课网APP