[英]Laravel eloquent model - get rows using intermediate table
我有3个表格的用户,帖子和照片。
post表与照片和用户(如post.user_id=users.id
和post_photo_id=photos._id
具有一对一关系。
我用
public function posts(){
return $this->hasMany('Post');
}
然后使用$ user-> posts()按用户获取所有帖子。
我需要的是按用户获取所有照片,例如$ user-> photos。
SELECT photos.* FROM photos JOIN posts ON posts.photo_id=photos.id JOIN users ON users.id=posts.user_id WHERE user_id=1
注意:照片表只有2个字段,即ID和照片。
在您的用户模型中,创建如下关系
Class User Extends Model
{
...
public function photos()
{
return $this->hasManyThrough('Photos','Posts','photo_id','id');
// Params (all strings): Final Model, Intermediate Model, Intermediate Model Key (posts), final Model Key (your photos)
}
public function Posts()
{
return $this->hasMany('Posts');
}
...
}// end class
然后,在您的控制器中,您只需使用关系调用数据即可。 假设您在暗示,但您明白了...
$picturesByUser = $this->user->with(['posts','photos'])->find($id);
最后,只要您渴望将它们加载...
@foreach(...)
$user->photos->pathToPicture;
$user->posts->pictureTitle;
@endforeach
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.