簡體   English   中英

Laravel - Eloquent:使用用戶帖子表從用戶那里獲取帖子

[英]Laravel - Eloquent: get posts from user with users post table

我搜索了很多,但找不到任何答案,所以我希望你能幫助我!

我有三個表:posts、users 和 post_users。 Post_users 包含兩列:user_id 和 post_id。

我需要使用 Eloquent 獲取用戶的所有帖子。 有任何想法嗎?

太感謝了!

(如果已經存在該問題,我很抱歉,但我還沒有找到它)

模型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');
}

嘗試:

$user = User::find($id);
$allpost = $user->posts()->get();
var_dump($allpost);

如果您沒有建立關系,請嘗試此操作。 但是,建立關系是首選。 PostUsers和Posts被假定為post-users和posts表的模型,並且將post作為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);
         }
}

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()路徑。

如你所願。 用戶與帖子之間的關系是多對多的

-定義的關系

// 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

嘗試這個

從控制器:

dd(Auth::user()->posts);

應用/用戶

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

在用戶模型上與 post 模型建立關系:

public function posts()
    {
        return $this->hasMany(Post::class);
    }

在 post 模型上與用戶模型建立關系:

 public function User()
    {
        return $this->belongsTo(User::class);
    }

在控制器或您使用的任何地方:

  $userPosts = User::find($user->id)->posts->where('status', 1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM