查询生成器:orderBy在群组之后不工作
问题描述:
我有一个主要查询将按照以下方式运行。我必须检查一个条件,如果条件满足,它将添加一个语句与现有的查询。但它不能以正确的方式工作意味着我无法使用现有的函数运行orderby函数?为什么这个或如何解决这个问题?查询生成器:orderBy在群组之后不工作
$query = DB::table('users')
->join('products','products.auth_id','users.id')
->Join('reviews','products.id','reviews.product_id')
->select('products.*','users.avatar',DB::raw('(sum(rating)/count(user_id)) as rating'))
->where('products.status','=','1')
->groupBy('products.id')
->latest();
if($request->get('dropdown')!='0' && $request->get('dropdown')=='desc')
{
$query->orderBy('products.regular_price', 'desc') ;
}
$products = $query->get();
答
试试这个
if($request->get('dropdown')!='0' && $request->get('dropdown')=='desc')
{
$query = $query->orderBy('products.regular_price', 'desc') ;
}
注意:您已经在您的查询中添加latest()
功能。这个功能加入您的查询以下
ORDER BY created_at DESC
的latest()
默认参数是created_at
您的查询似乎有问题。你能编辑你的问题,并显示你打算的原始MySQL查询,以及预期的输出吗? –
我怀疑从产品表开始这个查询,不是用户表会有所帮助。但我看到你依靠MySQL的“怪癖”(允许删除“group by”子句)。在最近的版本中,'group by'奇怪的默认行为已经发生了变化,现在比以前更符合标准,因此任何具有“group by”删节的查询都可能因此而失败。 –