3 回答

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以使用子查詢選擇:
business = Business::with('images')
? ? ? ? ->where('isActive', true)
? ? ? ? ? ? ? ? ? ? ->where(function ($q) use ($query){
? ? ? ? ? ? ? ? ? ? ? ? $q->where('name', 'LIKE','%'.$query.'%')->orWhere('description', 'LIKE','%'.$query.'%');
? ? ? ? ? ? ? ? ? ? })
->orderByDesc(['topRating' => Rating::select('rating')
? ? ->whereColumn('business_id', 'businesses.id')
? ? ->orderBy('rating', 'desc')
? ? ->limit(1)])
->get();
請(qǐng)確保設(shè)置業(yè)務(wù)表名稱而不是“業(yè)務(wù)”

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
為此,您必須手動(dòng)加入表格:
$business = Business::with('images')
->join('rating_table', 'rating_table.business_id', '=', 'business_table.id')
->where('isActive', true)
->where(function ($q) use ($query){
$q->where('name', 'LIKE','%'.$query.'%')
->orWhere('description', 'LIKE','%'.$query.'%');
})
->orderBy('rating_table.value', 'DESC')
->get();
經(jīng)過多次嘗試,無法使用 Eloquent 按他們的關(guān)系對(duì)“父”進(jìn)行排序,您可以在關(guān)系內(nèi)部進(jìn)行排序,僅此而已。

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
我相信你必須像這樣使用連接:
$business = Business::select([
'businesses.*', \DB::raw('AVG(ratings.rating) as avg_rating')
])
->join('ratings', 'businesses.id', '=', 'ratings.business_id')
->orderBy('ratings.avg_rating', 'DESC')
->get();
未測試
- 3 回答
- 0 關(guān)注
- 429 瀏覽
添加回答
舉報(bào)