Laravel - 从一个用户的Feed中获取文章

时间:2017-09-20 08:27:57

标签: laravel eloquent

我有三张桌子:

  

文章:

     
      
  • ID
  •   
  • FEED_ID
  •   
  • 标题
  •   
     

feed:

     
      
  • ID
  •   
  • USER_ID
  •   
  • 名称
  •   
     

用户:

     
      
  • ID
  •   
  • 名称
  •   

我想从一个用户的Feed获取所有文章,我搜索Eloquent Relationships ...

你能帮我吗?

3 个答案:

答案 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();