提问者:小点点

Laravel-从一个用户的订阅源获取文章


我有三张桌子:

文章:

  • id

喂养:

  • id
  • 用户id
  • 名字

用户:

  • id

我想从一个用户的订阅源中获取所有文章,我搜索有说服力的关系。。。

你能帮我吗?


共3个答案

匿名用户

首先,定义User模型上的关系。在这种情况下,最好的选择是使用具有多个直通关系的:

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
}

匿名用户

laravel文档始终是研究的良好开端,请阅读hasManyThroughhttps://laravel.com/docs/5.5/eloquent-relationships#has-许多通过

不介意是不是在5.5他们之间没有显著差异

匿名用户

模型中

在rticles.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();