亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel Eloquent 如何對輸出的“with”數據應用條件?

Laravel Eloquent 如何對輸出的“with”數據應用條件?

PHP
慕姐8265434 2022-07-16 10:02:09
這是我的代碼:$prestations = Prestation::with(            [            'service' => function($service) use($searchService) {                $service->select(['id','name'])->where('name', 'regexp', "/$searchService/i");            },            'facility' => function($facility) use($searchPartenaire) {                $facility->select(['id','name'])->where('name', 'regexp', "/$searchPartenaire/i");            }            ]        )            ->where('name', 'regexp', "/$search/i")            ->orderBy($orderBy, $orderDirection)            ->simplePaginate(50);        $res = [            'results' => $prestations,            'total' => Prestation::all()->count(),        ];問題在于,在 $searchService 和 $searchPartenaire 上“服務”和“設施”名稱不相等的所有數據的輸出中,值被“空”替換。所以我不想在搜索變量不等于的輸出中有值。
查看完整描述

3 回答

?
LEATH

TA貢獻1936條經驗 獲得超7個贊

你可以試試這樣


 $prestations = Prestation::with('service','facility');


        $prestations->whereHas('service', function ($query) use ($searchPartenaire) {

            $query->Where('name', 'like', '%' . $searchPartenaire . '%');

        });


        $prestations->whereHas('facility', function ($query) use ($searchPartenaire) {

            $query->Where('name', 'like', '%' . $searchPartenaire . '%');

        });


        $prestations->where('name', 'like', '%'.$search.'%')

            ->orderBy($orderBy, $orderDirection)

            ->simplePaginate(50);


        return $res = [

            'results' => $prestations,

            'total' => Prestation::all()->count(),

        ];

第一次創建Prestation實例 $prestations = Prestation::with('service','facility')


然后應用條件這是搜索的好方法


查看完整回答
反對 回復 2022-07-16
?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

我最終找到了一個非常相似的解決方案:


$prestations = Prestation::with('service','facility')

            ->whereHas('service', function ($query) use ($searchService) {

            $query->where('name', 'regexp', "/$searchService/i");

            })  

            ->whereHas('facility', function ($query) use ($searchPartenaire) {

                $query->where('name', 'regexp', "/$searchPartenaire/i");

            })

                ->where('name', 'regexp', "/$search/i")

                ->orderBy($orderBy, $orderDirection)

                ->simplePaginate(50); 


        $res = [

            'results' => $prestations,

            'total' => Prestation::all()->count(),

        ];

謝謝你的幫助。


查看完整回答
反對 回復 2022-07-16
?
青春有我

TA貢獻1784條經驗 獲得超8個贊

這是我在 Kamlesh Paul 建議后的代碼:


$prestations = Prestation::with('service','facility');


        $prestations->whereHas('service', function ($query) use ($searchService) {

            $query->where('name', 'regexp', "/$searchService/i");

        });


        $prestations->whereHas('facility', function ($query) use ($searchPartenaire) {

            $query->where('name', 'regexp', "/$searchPartenaire/i");

        });


        $prestations->where('name', 'regexp', "/$search/i")

            ->orderBy($orderBy, $orderDirection)

            ->simplePaginate(50);


        $res = [

            'results' => $prestations,

            'total' => Prestation::all()->count(),

        ];


        return $res;

但是有無限的http請求調用,我認為問題是當哪里找不到相同的名稱時,有人有建議嗎?謝謝。


查看完整回答
反對 回復 2022-07-16
  • 3 回答
  • 0 關注
  • 128 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號