我只想從某些列不為空的關系中獲取那些記錄。以下是表格:
專案:
| ID | 名稱 |
|---|---|
| 1 | 專案1 |
| 2 | 專案2 |
部分:
| ID | item_id | 名稱 |
|---|---|---|
| 1 | 1 | 第1部分 |
| 2 | 1 | 第2部分 |
| 3 | 2 | 空值 |
| 4 | 2 | 第 3 部分 |
模型內部關系Item:
public function parts()
{
return $this->hasMany('App\Models\Part');
}
模型內部關系Part:
public function item()
{
return $this->belongsTo('App\Models\Item');
}
我試過這段代碼:
Item::with('parts')
->whereHas('parts', function($query) {
$query->whereNotNull('name');
})
->get();
它只檢索item. id = 1我也想item和id = 2,但只在partwhere nameis not null。
uj5u.com熱心網友回復:
item2 分為 2 部分的問題
部分:
| ID | item_id | 名稱 |
|---|---|---|
| 3 | 2 | 空值 |
| 4 | 2 | 第 3 部分 |
您的查詢回傳部分(id:3 和 4),因為您正在查詢:
給我所有帶有零件的物品,其中物品的零件帶有名稱。
但是你需要
給我所有帶有名稱的部分的專案,其中專案的部分帶有名稱。
為此,您需要添加一個子查詢
Item::with(['parts' => function($query) {
$query->whereNotNull('name');
}])
->whereHas('parts', function($query) {
return $query->whereNotNull('name');
})
->get();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/422364.html
標籤:
