我试图理解,如果在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"}
仅包含位置的属性,而不包含事件!我该如何展示?
感谢
答案 0 :(得分:1)
尝试:
$event = Event::with('location')->where('name', $name)->first();
$location = $event->location;
通过这种方式,您将获得事件本身以及完整的相关位置location
字段。
请参阅文档上的Eager Loading部分。
答案 1 :(得分:0)
试试这个:
$event = Event::with('location')->where('name', $name)->first();
return $event->toJson();
您可以使用data.location
答案 2 :(得分:0)
您可以使用:
$event = Event::with('location')->where('name',$name)->first();
或:
$event = Event::where('name',$name)->first();
$event->load('location');
然后当您返回模特或致电$event->toJson()
时,您的location
关系会被加载。
如果您想了解有关加载关系的详细信息,请查看laravel eager loading using with() vs load() after creating the parent model