簡體   English   中英

Laravel Eloquent - 從條件 hasMany 關系返回值數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM