选择所有列但与Laravel中的数据库表不同

时间:2018-05-10 04:22:48

标签: php mysql database laravel

Bellow SQL命令运行完美:

select * from `product` group by `owner_name` order by `id` asc 

当我在Laravel项目中翻译上面的代码以获得相同的结果时:

Product::select('*')
        ->orderBy('id','asc')->groupBy('owner_name')
         ->get();

此laravel代码返回错误

  

SQLSTATE [42000]:语法错误或访问冲突:1055   'db1.product.id'不在GROUP BY中(SQL:select * from product group   owner_name订购id asc)

问题是我有很多重复的记录,其中一些列略有不同。我需要通过owner_name获取它们并且只有一次。

2 个答案:

答案 0 :(得分:2)

编辑应用程序的数据库配置文件isManaged()

在mysql数组中,设置config/database.php以禁用MySQL的严格模式

答案 1 :(得分:0)

您无需执行'select(*)',默认情况下会选择所有列数据。

试试这个:

Product::orderBy('id','asc')->groupBy('owner_name')
     ->get();

如果您想要获取所选列,您可以这样做:

Product::select(['column_1', 'column_2'])
    ->orderBy('id','asc')->groupBy('owner_name')
     ->get();