2016-08-01 112 views
0

我有這樣我PostgreSQL的數據:Laravel順序按特定的字符串

背景

id | Size 
1 | small 
2 | medium 
3 | large 

藝術

id | name  | background_id 
1 | Shine  | 1 
2 | Sun  | 3 
3 | Mountain | 3 

我想獲得先進的數據排序依據背景由它的價值從小(小,中,大)與l aravel eloquent

Art::with([ 'background' => function($background) { 
    $background->oderBy(DB::raw("what is this?")); 
} ])->get(); 

如何解決?

FIELD(type, 'S', 'M', 'L', 'XL') 

不工作

回答

0

可以隨着orderByRaw():

$queryOrder = "CASE WHEN Size = 'small' THEN 1 "; 
$queryOrder .= "WHEN Size = 'medium' THEN 2 "; 
$queryOrder .= "ELSE 3 END"; 
Art::with('background') 
->orderByRaw($queryOrder); 
->get(); 
0

我的order字段添加到後臺表,以便ordening使用CASE WHEN表達時,一個新的領域是可以改變的無需更改代碼即可添加。然後,你可以用下面的查詢:

Art::with('background') 
->orderBy('background.order') 
->get(); 
+0

這是顯示錯誤SQLSTATE [42P01]:不確定表:7錯誤:缺少FROM子句的表 –

+0

條目是否已經設置了'$ table'財產在你的'藝術'模特? – Jerodev

相關問題