【发布时间】:2019-01-07 15:05:29
【问题描述】:
我正在尝试使用 order by 而不在 groupby 中添加 order 列,它只有在我直接从数据库执行但从 laravel 中得到数据库错误时才有效
我做了这个雄辩的代码
Comment::select('product_id')->where('shop_name', $shop)->groupby('product_id')->distinct()->orderBy('created_at')->paginate(12)
它将产生以下查询
从
comments中选择不同的 DISTINCT(product_id),其中shop_name= 'shopname' group byproduct_idorder bycreated_atasc limit 12 offset 0
如果我直接在数据库中查询上述查询,它就可以工作
但是如果我使用 Laravel 雄辩的代码,它会触发这个错误
SQLSTATE[42000]:语法错误或访问冲突:1055 'areviews_areviewzappz.cmets.created_at' 不在 GROUP BY 中(SQL: 从
comments中选择不同的 DISTINCT(product_id),其中shop_name= 'shopname' group byproduct_idorder bycreated_atasc limit 12 offset 0)
我该如何解决这个问题?
【问题讨论】:
-
您可以在
groupBy中添加created_at -
distinct DISTINCT(product_id)是什么?DISTINCT是关键字而不是 MySQL 中的函数我想知道为什么 laravel 会生成这个 SQL?除了 DISTINCT 生成双倍..“如果我直接在数据库中摩擦上述查询,它可以工作”是的,它“工作”,但你可以获得 无效数据,因为它不是 ANSI SQL 有效..
标签: php mysql database laravel eloquent