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

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

Laravel 雄辯,連接表并進行過濾查詢

Laravel 雄辯,連接表并進行過濾查詢

PHP
臨摹微笑 2022-05-27 16:29:12
我正在嘗試向過濾表編寫查詢,但看起來有些不對勁。    $keyword = "chapel";            $city = $request->get("city");    $price = $request->get("price");首先檢查計劃表是否為空。然后開始編寫過濾查詢。    $datas = Place::whereHas("plans")    ->groupBy("address","place_name")    ->when($keyword, function($query, $keyword) {        return $query->where("place_name", "LIKE", "%$keyword%");    })    ->when($city, function($query, $city) {        return $query->where("city", "LIKE", "%$city%");    })查詢工作到 basic_info 表。但是當我$keyword在basic_info表中搜索時,然后會彈出錯誤并說調用模型 > [App\Model\Place] 上的未定義關系 [basic_infos]。    //basic info table    ->when($keyword, function($query) use ($keyword){        $query->with(["basic_infos" => function($query, $keyword){            return $query->where("basic_info.wedding_style", "LIKE", "%$keyword%");        }]);    })    //plan table    ->when($price, function($query) use ($price){        $query->with(["basic_infos" => function($query, $price){            return $query->where("plans.plan_price", "<=", $price);        }]);    })    ->paginate(20);    return $datas;但實際上它是定義的。這是模型放置模型public function basicInfos(){    return $this->hasMany("App\Model\BasicInfo");}基本信息模型public function place(){    return $this->belongsTo("App\Model\Place");}但是在查詢內部->when函數中,當我使用->with它時,似乎出現了問題。我想,我在錯誤的時間使用它,否則......同樣的事情肯定也會發生在plan表的查詢中......什么是正確的方法?
查看完整描述

1 回答

?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

你有兩個問題:

  1. 您需要使用函數名稱而不是表名稱來建立關系。

  2. 如果您想使用其他參數$query,請使用use。

->when($keyword, function($query) use ($keyword){

        $query->with(["basicInfos" => function($query) use ($keyword){

            return $query->where("wedding_style", "LIKE", "%$keyword%");

        }]);

    })


查看完整回答
反對 回復 2022-05-27
  • 1 回答
  • 0 關注
  • 181 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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