Как присоединиться к Eloquent? - PullRequest
0 голосов
/ 09 декабря 2018

Я хотел бы сделать автоматическое объединение групп при выборе модели Eloquent в Laravel.

Предположим, у меня есть эти таблицы:

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 Ответ

0 голосов
/ 09 декабря 2018

Ваша магия выполняется в два этапа:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...