繁体   English   中英

Laravel雄辩的模型-使用中间表获取行

[英]Laravel eloquent model - get rows using intermediate table

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

post表与照片和用户(如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和照片。

在您的用户模型中,创建如下关系

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

直接从Laravel文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM