我已经使用Laravel 5.5进行了应用,并使用了MySQL数据库。我有2张桌子 人:id,name,homeplanet_id 行星:id,名字 和外键关键人物.homeplanet_id引用行星id
我还有2个模型:Person和Planet,以及PersonController。 我可以使用
在控制器中获取Person的数据Person::find($id)->getAttributes()
但是就像
[
id => 1
name => Name
homeplanet_id => 1
]
如何让数据看起来像下一个
[
id => 1
name => Name
homeplanet_id => Planet_name
]
答案 0 :(得分:1)
您可能需要一个位于您的Eloquent模型和实际返回给您的应用程序用户的JSON响应之间的转换层。
https://laravel.com/docs/5.5/eloquent-resources
因此,如果您想获取JSON,请使用资源。如果您想要这种数据格式用于Blade视图,那么转换它是个坏主意。只需使用Blade模板中的数据:
{{ $person->name }} lives on the planet {{ $person->planet->name }}
其中planet
是Person
模型中定义的关系名称:
public function planet()
{
return $this->belongsTo(Planet::class, 'homeplanet_id')
}
答案 1 :(得分:0)
与()方法一起使用,
像什么一样的东西
$ person = Person::where(array())->with('planet')->get(); //You can fetch all related data by passing multiple values for method with()
打印
{{$person->planet->name}} //where planet indicated the relation on person model as follows
planet
表示人物模型上的关系。
在我们的案例中
获取数据
$person = Person::where(array('id'=>$id))->with('planet')->get();
在人模型中执行以下操作,使用with()
方法获取行星:
Person extends model{
public function panet(){
//your relation one to one, one to many etc.....whatever
}
}
尝试在Laravel(eloquent)和范围查询中探索急切加载。
访问预先加载的链接,一切都将由ORM本身完成。Link