我有3个表用户,帖子和照片。
帖子表与照片有一对一的关系&用户可以使用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&照片。
答案 0 :(得分:0)
在您的用户模型中,创建一个类似
的关系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