我有兩個關系表。我使用 where 過濾記錄以及使用 wherehas 過濾記錄。但找不到兩者之間的區別
uj5u.com熱心網友回復:
如果您使用 where(condition)->with(relation) 查詢將回傳條件匹配的記錄和關系資料(如果有)。如果您使用 where(condition)->whereHas(relation) 查詢將回傳條件匹配和存在關系的記錄
uj5u.com熱心網友回復:
當您將 with() 與 where() 條件一起使用時,您僅將條件應用于主表而不是相關表,但是當您使用 whereHas() 時,這會將條件應用于關系,而不是主表。例如
1) User::with("post")->where('id', 1)->first();
2) User::whereHas("post", function (Builder $query) {
$query->where('status', 1);
})->get();
第一個將獲取用戶 ID 為 1 的用戶,而第二個將獲取所有狀態為已發布的帖子的用戶
uj5u.com熱心網友回復:
1)。在哪里()
$table::with("relation-name")->where(condition)->get();
簡單地用這個來獲取資料,"relation-name"第二 where(condition)
個表(關系表)沒有條件適用;
2)。哪里有()
User::where Has("relation-name", function (Builder $query) {
$query->where('status', 1);
})->get();
wherehas() 在第二張表(關系表)上應用條件;
我的理解和在我的專案中也實踐過這種方式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/513063.html
