下面是我的sql代码,可以正常工作
SELECT oid, date(ordered_on) AS ord, count(date(ordered_on)) AS cnt
FROM order
GROUP BY ord DESC
LIMIT 10
但是当我在laravel中应用它时,我无法评估结果。下面是laravel代码
DB::table('order')
->select(DB::raw('oid, date(ordered_on) as ord, count(date(ordered_on)) as cnt'))
->groupBy('ord')
->orderBy('oid', 'desc')
->limit(10)
->get();
答案 0 :(得分:2)
理想情况下,您的原始MySQL查询应该不起作用,因为它没有多大意义。我感觉您想要做的是按日期获取记录数。如果是这样,那么您需要此查询:
SELECT DATE(ordered_on), COUNT(*) AS cnt
FROM `order`
GROUP BY DATE(ordered_on);
这将暗示以下Laravel代码:
DB::table('order')
->select(DB::raw('DATE(ordered_on) AS ord, COUNT(*) AS cnt'))
->groupBy('ord')
->orderBy('ord', 'desc')
->limit(10)
->get();
顺便说一句,不要使用order
之类的保留MySQL关键字来命名您的表,列等。我需要在查询中转义order
,并且您将需要永久做同样的事情。
答案 1 :(得分:0)
您在laravel中使用严格模式。您可以根据自己的需要进行调整。
在设置config/database.php
中进入strict=>false
,您就可以参加了。
'mysql' => [
// ....
'strict' => false
],