我试图理解,如果在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"}
它只包含位置的属性而不包含事件!我怎么能同时显示?
谢谢
试试:
$event = Event::with('location')->where('name', $name)->first();
$location = $event->location;
通过这种方式,您将获得事件本身以及location
字段的完整相关位置。
请参阅文档中的Eager Loading部分。
试试这个 :
$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 eager loading using with() vs load() after creating the parent model