首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有raw的laravel查询生成器?

没有raw的laravel查询生成器?
EN

Stack Overflow用户
提问于 2020-09-25 11:02:06
回答 1查看 63关注 0票数 0

我有一个关于这个代码的查询

代码语言:javascript
复制
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的select值将只返回'‘string

EN

回答 1

Stack Overflow用户

发布于 2020-09-25 11:15:23

您可以将您的字段定义为访问器,并将计算逻辑移动到那里。

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

例如:

代码语言:javascript
复制
public function getTotalPinholeAttribute()
{
    // calculation logic here
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64057197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档