第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Laravel 訂單集合基于一對(duì)多關(guān)聯(lián)關(guān)系的屬性

Laravel 訂單集合基于一對(duì)多關(guān)聯(lián)關(guān)系的屬性

PHP
蕭十郎 2023-04-21 13:55:59
我有一個(gè)名為 Business 的模型(包含列描述、名稱、視圖等),它與模型“Rating”具有一對(duì)多關(guān)系。我想查詢我的業(yè)務(wù)模型,以便它返回一個(gè)結(jié)果,檢查名稱或描述中是否存在搜索字符串,并首先按評(píng)級(jí)最高的業(yè)務(wù)排序,然后再查看業(yè)務(wù)。我已經(jīng)為搜索查詢編寫了代碼。在下面找到:$business = Business::with('images')    ->where('isActive', true)    ->where(function ($q) use ($query) {        $q->where('name', 'LIKE', '%' . $query . '%')            ->orWhere('description', 'LIKE', '%' . $query . '%');    })->get();我知道我可以像這樣獲取企業(yè)的平均評(píng)分:$averageRating = Rating::where('business_id', $id)->avg('rating');$business = Business::with(['images'])->get();foreach ($business as $item) {    $item["rating"] = floor($averageRating);}那么,我如何根據(jù)最高收視率排序,然后是最高瀏覽量?
查看完整描述

3 回答

?
慕桂英3389331

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ù)”

查看完整回答
反對(duì) 回復(fù) 2023-04-21
?
吃雞游戲

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)行排序,僅此而已。


查看完整回答
反對(duì) 回復(fù) 2023-04-21
?
躍然一笑

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();

未測試


查看完整回答
反對(duì) 回復(fù) 2023-04-21
  • 3 回答
  • 0 關(guān)注
  • 429 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)