[英]Laravel Eloquent - Return array of values from conditional hasMany relationship
我對 PHP 相當陌生,這真的讓我很震驚。 我知道我可以用原始的 SQL 做到這一點,但我寧願以正確的方式做到這一點。
我已經建立了關系,並且它們工作正常。
我有一張房屋表,如果房屋有紅色屋頂,我想獲取這些房屋中所有人的姓名,但前提是該人有棕色鞋子。
Houses::with('people')
->whereHas('people', function($q){
$q->where('shoes', 'brown');
})->where('roof','red')->get()
這是我所得到的。
房子表:
+----+--------+
| id | roof |
+----+--------+
| 1 | red |
| 2 | blue |
| 3 | red |
+----+--------+
人員表
+----+----------+-------+-------+
| id | house_id | shoes | name |
+----+----------+-------+-------+
| 1 | 1 | brown | paul |
| 2 | 1 | brown | susie |
| 3 | 2 | red | bob |
| 4 | 2 | brown | kate |
| 5 | 3 | brown | frank |
+----+----------+-------+-------+
我想要的 output 是一組人名,如下所示:
[paul, susie, frank]
我覺得我整天都在用頭撞牆
由於您正在請求人員,因此最好從您的People
Model 開始。
請注意whereHas
需要表名,而不是第一個參數中的關系。
$people = People::where('shoes', 'brown')
->whereHas('houses', function ($query) {
$query->where('roof', 'red');
})->get();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.