如何通过create_at(仅限日期)获取所有记录并对其进行分组

时间:2019-02-02 06:39:45

标签: php laravel

我有一个名为shopping_apps,的表,该表在不同的日期有不同的条目。我想拥有所有记录,但是将所有记录按日期分组(而不是时间部分)。假设我在date1上有20个条目,在date2上有12个条目。我只想从数据库中提取两个值:date1date2。所述控制器的下方,和Shopping_app是我的型号名称。

<?php

// Use substr() to retrieve date part 10 chars in length.
$shoppingApp = Shopping_app::orderBy('created_at', 'DESC')
    ->groupBy(substr('created_at', 0, 10))
    ->get();

错误:

  

SQLSTATE [42000]:语法错误或访问冲突:1055   'laravelpro4.shopping_apps.id' 是不是在GROUP BY(SQL:从SELECT *   shopping_appscreated_at分组,按created_at desc)

2 个答案:

答案 0 :(得分:1)

$shoppingApp = Shopping_app::where('created_at', '>=', \Carbon\Carbon::now->subMonth())
                    ->groupBy(DB::raw('Date(created_at)'))
                    ->orderBy('created_at', 'DESC')->get();

尝试这个也许对您有帮助

答案 1 :(得分:1)

因此,与@manish的帮助下,我得到正确的答案(我一直在试图获得)

错误已解决

添加错误

config\database.php中-> “ mysql” 数组 将'strict'=>假设置为全部禁用。

最终代码:

$shoppingApp = Shopping_app::where('created_at', '>=', \Carbon\Carbon::now()->subMonth())
                    ->groupBy(DB::raw('Date(created_at)'))
                    ->orderBy('created_at', 'DESC')->get();