在json中laravel 5.5模型关系

时间:2017-12-22 14:50:15

标签: json laravel eloquent laravel-5.5 laravel-response

我试图理解,如果在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 个答案:

答案 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