在我的laravel 5.2 web应用程序中,我有以下三个表-
使用者
id
username
简介
id
user_id
profile_images
id
profile_id
概述我的场景-用户可以有一个配置文件(一对一),一个配置文件可以有多个配置文件图像(一对多)。具有相关关系函数的这些表的模型如下-
使用者php
public function profile_images(){
$this->hasManyThrough('App\ProfileImage', 'App\Profile');
}
public function profile(){
return $this->hasOne('App\Profile');
}
Profile.php
public function profile_images()
{
return $this->hasMany('App\ProfileImage');
}
public function user()
{
return $this->belongsTo('App\User');
}
档案图像。php
public function profile()
{
return $this->belongsTo('App\Profile');
}
我的问题是,当我在用户模型上调用profile_images()时,我只获取用户数据,并且只返回profile和profile_图像的列名。即使我有一个配置文件(具有与测试用例匹配的用户id)和两个具有匹配配置文件id的配置文件图像,也不会返回任何属性/数据。
你能帮忙吗?我假设这是我的hasManyOut用法的问题。
谢谢
不需要。您的hasManyThrough关系很好,但是当您调用profile\u images
方法时,它会返回QueryBuilder实例。要获取相关模型的集合,请使用get
方法
$images = $user->profile_images()->get();
或者用拉威尔的“魔法”
$images = $user->profile_images;