Laravel eloquent模型 - 使用中间表

时间:2016-01-11 09:45:01

标签: php mysql laravel-5 eloquent

我有3个表用户,帖子和照片。

帖子表与照片有一对一的关系&用户可以使用post.user_id=users.idpost_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&照片。

1 个答案:

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

Straight out of the Laravel Docs

相关问题