Модельное отношение laravel 5.5 в json
Я пытаюсь понять, если в laravel 5.5 есть метод, который дает модель, связанную с другой моделью внешним ключом, я могу получить результат полного объединения атрибутов обеих моделей. Я хочу не возвращать две модели и объединять их.
Ниже код моей модели:
class Event extends Model {
public function location(){
return $this->hasOne('App\Location');
}
}
В контроллере я получаю информацию о местоположении соответствующего события, но в результате я хотел бы видеть информацию как о событии, так и о местоположении.
В контроллере Если я вызываю модель с ORM:
$event = Event::where('name',$name)->first()->location;
$model=$eventLocation->getModel();
return $model;
И получить этот JSON с
{"id":12,"created_at":null,"updated_at":null,"name":"location_test","event_id":"1"}
Это содержит только атрибуты местоположения, а не для события! Как я могу показать оба?
Спасибо
3 ответа
Попробуйте с:
$event = Event::with('location')->where('name', $name)->first();
$location = $event->location;
Таким образом, вы получите само событие и полное местоположение location
поле.
См. Раздел " Жадная загрузка " в документации.
Попробуй это:
$event = Event::with('location')->where('name', $name)->first();
return $event->toJson();
Вы будете иметь доступ к вашему событию с data.location
Ты можешь использовать:
$event = Event::with('location')->where('name',$name)->first();
или же:
$event = Event::where('name',$name)->first();
$event->load('location');
Затем, когда вы просто вернете модель или позвоните $event->toJson()
у тебя будет location
отношения загружены.
Если вы хотите получить подробную информацию о загрузочных отношениях, вы можете посмотреть на загрузку laravel, используя with() против load() после создания родительской модели.