我有三张桌子:
文章:
- ID
- FEED_ID
- 标题
feed:
- ID
- USER_ID
- 名称
用户:
- ID
- 名称
我想从一个用户的Feed获取所有文章,我搜索Eloquent Relationships ...
你能帮我吗?
答案 0 :(得分:0)
laravel文档始终是研究的良好开端,请阅读hasManyThrough https://laravel.com/docs/5.5/eloquent-relationships#has-many-through
如果它在5.5中,请不要介意它们之间没有显着差异答案 1 :(得分:0)
首先,在User
模型上定义关系。最适合您的情况是使用Has Many Through关系:
public function articles()
{
return $this->hasManyThrough(
'App\Article',
'App\Feed',
'user_id', // Foreign key on feeds table...
'feed_id', // Foreign key on articles table...
'id', // Local key on users table...
'id' // Local key on feeds table...
);
}
然后创建一个用户对象并获取他的文章:
$user = /App/User::with('articles')->find($id);
foreach($user->articles as $article) {
// do whatever you need
}
答案 2 :(得分:0)
在模型中
在Articles.php中
public function Feed()
{
return $this->belongsTo('App\Feed');
}
在Feed.php中
public function User()
{
return $this->belongsTo('App\User');
}
public function Articles()
{
return $this->hasMany('App\Articles');
}
在User.php中
public function Feed()
{
return $this->hasMany('App\Feed');
}
控制器中的
//获取id = $ id
的所有用户文章$reports2 = Articles::with(array('Feed'=>function($query)use($id){
$query->with('User');
$query->where('user_id',$id);
}))->orderBy('id', 'desc')
->get();