Laravel - Eloquent:从用户帖子表中获取帖子

时间:2016-08-17 13:59:34

标签: php laravel eloquent relation

我经常搜索但找不到任何答案,所以我希望你能帮助我!

我有三个表:帖子,用户和post_users。 Post_users包含两列:user_id和post_id。

我需要获得Eloquent用户的所有帖子。 有什么想法吗?

非常感谢你!

(我很抱歉,如果已经存在这个问题,但我还没有找到它)

5 个答案:

答案 0 :(得分:1)

如果你没有建立关系,试试这个。然而,建立关系是首选。 PostUsers和Posts假定为post-users和posts表的模型,并作为posts表的列发布。这给出了登录用户的帖子,但没有经过测试。

$postusers=PostUsers::where(['user_id'=>Auth::user()->id])->get();
foreach($postusers as $postuser)
{
        $posts=Posts::where(['post_id'=>$postuser->post_id)]->get();
        foreach($posts as $post)
         {
            print_r($post->post);
         }
}

答案 1 :(得分:1)

Laravel文档很好地介绍了这一点,但是当我第一次开始时,我遇到了一个问题。查看Laravel Relationships以获取完整的文字。

// Inside your Post model
public function user() {
    return $this->belongsTo('App\User');
}

// Inside your User model
public function posts() {
    return $this->hasMany('App\Posts');
}

然后您可以创建一个查询:

$posts = User::find(1)->posts;

或者你可以进一步过滤..

$posts = User::find(1)->posts()->where('active', 1)->get();

如果您的模型位置和名称不同,您可能需要更改hasMany()belongsTo()的路径。

答案 2 :(得分:1)

如你所愿。用户和帖子之间的关系是多对多的

- 定义关系

// In User model
public function posts(){
    return $this->belongsToMany(Post::class);
}
// In Post model
public function users(){
    return $this->belongsToMany(User::class);
}

- 表格结构

- users
    id
- posts
    id
- post_user
    user_id
    post_id

- 获取用户的所有帖子

$posts = User::find($user_id)->posts

答案 3 :(得分:1)

试试这个

来自控制器:

    public function posts()
    {
        return $this->belongsToMany('App\Entities\posts', 'post_users', 'user_id', 'post_id');
    }

应用/用户

{{1}}

答案 4 :(得分:1)

模型THREE.OrbitControl

User

模型public function posts() { return $this->belongsToMany('App\Post', 'post_users', 'user_id', 'post_id'); }

Post

尝试:

public function users()
{
  return $this->belongsToMany('App\User', 'post_users', 'post_id', 'user_id');
}