如何将此 MySQL 查询转换为 Laravel?
Posted
技术标签:
【中文标题】如何将此 MySQL 查询转换为 Laravel?【英文标题】:How to convert this MySQL query to Laravel? 【发布时间】:2019-11-04 03:09:30 【问题描述】:这是我的 mysql 查询(在 phpMyAdmin 中工作):
SELECT workcenter, (SUM(w1+w2 +w3 +w4)/ (COUNT(DISTINCT(teknisi))*40*4) )*100 AS total FROM `team` GROUP by workcenter ORDER BY total
然后,我在 Laravel Sintax 中尝试如下(不起作用):
$sql = Team::groupBy('workcenter')->select('workcenter', \DB::raw('(SUM(w1+w2+w3+w4)/ (COUNT(DISTINCT(teknisi))*30*4) )*100 AS total'))
->OrderBy('total', 'Desc')
->get();
当我运行 laravel sintax 时,它没有显示任何错误,但输出什么都没有..
请任何人帮助我将 MySQL 查询转换为 Laravel Sintax。谢谢!
【问题讨论】:
我已经试过你的代码了。它工作正常。您的模型是否连接了正确的数据库或定义了正确的表名? 【参考方案1】:我认为您已经足够接近了,但是,这看起来不像是使用 Eloquent ORM 进行分组的正确方法。尝试使用原始表达式,这样可能会起作用:
$sql = DB::table('team')
->select(DB::raw('workcenter, (SUM(w1+w2 +w3 +w4)/ (COUNT(DISTINCT(teknisi))*40*4) )*100 as total'))
->orderBy('total', 'desc')
->groupBy('workcenter')
->get();
在此处了解有关原始表达式的更多信息 - https://laravel.com/docs/6.x/queries#raw-expressions
【讨论】:
感谢您的回答先生,我已经复制+粘贴了sintax,但仍然无法正常工作,嗯【参考方案2】:每当我想将 SQL 查询转换为 Laravel 时,我总是更改一个列名,laravel 错误报告将显示您当前的查询,您可以将其与 SQL 查询进行比较
【讨论】:
我的 sintax 没有导致任何错误,但只显示 'nothing' idk whyy :( 如果您将列名 workcenter 更改为 workcente2r,例如,这应该会导致未找到列的错误,并且会输出带有错误列的查询。以上是关于如何将此 MySQL 查询转换为 Laravel?的主要内容,如果未能解决你的问题,请参考以下文章