laravel查询生成器没有原始?

时间:2020-09-25 03:02:05

标签: laravel builder

我对此代码进行查询

return $query
                ->select([
                    'lineofpro AS pabrik_line',
                    'date AS tanggal',
                    DB::raw('ROUND((100*(COUNT( CASE WHEN `tabTravel Card`.qcresu = "Pass" THEN 1 ELSE NULL END ))/count(`tabTravel Card`.lineofpro))) AS lar_percentage'),
                    DB::raw("ROUND( IFNULL(SUM(`tabTravel Card`.finga),0) / ( count(`tabTravel Card`.lineofpro) * 200) * 1000000) AS finger_a"),
                    DB::raw("ROUND( IFNULL(SUM(`tabTravel Card`.fingb),0) / ( count(`tabTravel Card`.lineofpro) * 200) * 1000000) AS finger_b"),
                    DB::raw("ROUND( IFNULL(SUM(`tabTravel Card`.fingc),0) / ( count(`tabTravel Card`.lineofpro) * 200) * 1000000) AS finger_c"),
                    DB::raw("ROUND( IFNULL(SUM(`tabTravel Card`.fingd),0) / ( count(`tabTravel Card`.lineofpro) * 200) * 1000000) AS finger_d"),
                    DB::raw("ROUND( IFNULL(SUM(`tabTravel Card`.finge),0) / ( count(`tabTravel Card`.lineofpro) * 200) * 1000000) AS finger_e"),
                    DB::raw("ROUND( IFNULL(SUM(`tabTravel Card`.crotchf),0) / ( count(`tabTravel Card`.lineofpro) * 200) * 1000000) AS crotch_f"),
                    DB::raw("ROUND( IFNULL(SUM(`tabTravel Card`.crotchg),0) / ( count(`tabTravel Card`.lineofpro) * 200) * 1000000) AS crotch_g"),
                    DB::raw("ROUND( IFNULL(SUM(`tabTravel Card`.crotchh),0) / ( count(`tabTravel Card`.lineofpro) * 200) * 1000000) AS crotch_h"),
                    DB::raw("ROUND( IFNULL(SUM(`tabTravel Card`.crotchi),0) / ( count(`tabTravel Card`.lineofpro) * 200) * 1000000) AS crotch_i"),
                    DB::raw("ROUND( IFNULL(SUM(`tabTravel Card`.palmj),0) / ( count(`tabTravel Card`.lineofpro) * 200) * 1000000) AS palm_j"),
                    DB::raw("ROUND( IFNULL(SUM(`tabTravel Card`.cuffk),0) / ( count(`tabTravel Card`.lineofpro) * 200) * 1000000) AS cuff_k"),
                    DB::raw("ROUND( IFNULL(SUM(`tabTravel Card`.totalpin),0) / ( count(`tabTravel Card`.lineofpro) * 200) * 1000000) AS total_pinhole"),
                ])
                ->where([
                    ['date', '>=', $beginDate],
                    ['date', '<=', $endDate],
                    $this->generatePlanCodeFilter($plan, $line),
                ])
                ->groupBy([
                    'lineofpro',
                    'date',
                ]);

是否可以在没有DB :: raw的情况下进行查询? 我尝试创建动态查询 但是使用数组通过DB :: raw返回选择值只会返回''string

1 个答案:

答案 0 :(得分:0)

您可以将字段定义为访问器,并在其中移动计算逻辑。

然后,您可以使用Eloquent构建查询。

例如:

public function getTotalPinholeAttribute()
{
    // calculation logic here
}

您可以在此处了解有关访问器的更多信息:https://laravel.com/docs/8.x/eloquent-mutators#defining-an-accessor