2017-10-08 78 views
0

我有一個主要查詢將按照以下方式運行。我必須檢查一個條件,如果條件滿足,它將添加一個語句與現有的查詢。但它不能以正確的方式工作意味着我無法使用現有的函數運行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(); 
+0

您的查詢似乎有問題。你能編輯你的問題,並顯示你打算的原始MySQL查詢,以及預期的輸出嗎? –

+0

我懷疑從產品表開始這個查詢,不是用戶表會有所幫助。但我看到你依靠MySQL的「怪癖」(允許刪除「group by」子句)。在最近的版本中,'group by'奇怪的默認行爲已經發生了變化,現在比以前更符合標準,因此任何具有「group by」刪節的查詢都可能因此而失敗。 –

回答

0

試試這個

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

+0

由於最新()當我刪除它,即使在我的查詢,但最新()你的解決方案無法正常工作..可以再次檢查它嗎? – User57

+0

爲什麼要在查詢中添加最新內容。我已經在我的回答中解釋了最新的工作。 @ User57 –

+0

如果我需要展示最新的產品和基於價格怎麼辦..還有其他聲明與現有的我沒有發佈..所以我需要保持最新的一個。 – User57