如何加入 Eloquent?

Posted

技术标签:

【中文标题】如何加入 Eloquent?【英文标题】:How to join with Eloquent? 【发布时间】:2018-12-09 12:44:29 【问题描述】:

我想在 Laravel 中从 Eloquent 模型中进行选择时进行自动连接分组。

假设我有这些表:

humans        pets 
------        ----
int id        int id
varchar name  varchar name
              varchar category  
              int owner_id 

填充了这些值:

humans        pets
------        ----
1 Bob         1 Lucy Dog 1
2 Alice       2 Sadie Dog 1 
3 Eve         3 Buster Cat 2
              4 Sam Fish 2

因此,在我的 php 中有这些模型:

class Human extends Eloquent 


class Pet extends Eloquent 
   

这是我的愿望:

function wish() 
   return Human::all()->magic()->toJson();

为此,我希望得到这个准确的输出。我应该输入什么magic()

[
  
    "id": 1,
    "name": "Bob",
    "pets": [
      "id": 1, "name": "Lucy", "category": "Dog",
      "id": 2, "name": "Sadie", "category": "Dog"
    ]
  ,
  
    "id": 1,
    "name": "Alice",
    "pets": [
      "id": 3, "name": "Buster", "category": "Cat",
      "id": 4, "name": "Sam", "category": "Fish"
    ]
  ,
  
    "id": 1,
    "name": "Eve",
    "pets": []
  
]

【问题讨论】:

【参考方案1】:

你的魔法分两步完成:

class Human extends Eloquent 
    public function pets() 
    
        return $this->hasMany('Pet');
    

为了您的查询

function wish() 
   return Human::with('pets')->all()->toJson();

您还可以将with 包含到您的模型中:

class Human extends Eloquent 
    protected $with = ['pets'];

    public function pets() 
    
        return $this->hasMany('Pet');
    

有关此的文档可从此处获得:

https://laravel.com/docs/5.7/eloquent-relationships

【讨论】:

以上是关于如何加入 Eloquent?的主要内容,如果未能解决你的问题,请参考以下文章

加入 Eloquent 打破关系?

如何加入 3 表 eloquent laravel 8

Laravel Eloquent 加入表和计数相关

无法获取加入多个 Eloquent 关系的数据

如何通过 laravel eloquent 模型 Laravel 5 加入三个表

Lumen + Eloquent 6.X 加入并聚合成 JSON 结构