在json中laravel 5.5模型关系

问题描述 投票:0回答:3

我试图理解,如果在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"}

它只包含位置的属性而不包含事件!我怎么能同时显示?

谢谢

json laravel eloquent laravel-5.5 laravel-response
3个回答
1
投票

试试:

$event = Event::with('location')->where('name', $name)->first();
$location = $event->location;

通过这种方式,您将获得事件本身以及location字段的完整相关位置。

请参阅文档中的Eager Loading部分。


0
投票

试试这个 :

$event = Event::with('location')->where('name', $name)->first();

return $event->toJson();

您可以使用data.location访问您的活动


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

© www.soinside.com 2019 - 2024. All rights reserved.