我经常搜索但找不到任何答案,所以我希望你能帮助我!
我有三个表:帖子,用户和post_users。 Post_users包含两列:user_id和post_id。
我需要获得Eloquent用户的所有帖子。 有什么想法吗?
非常感谢你!
(我很抱歉,如果已经存在这个问题,但我还没有找到它)
答案 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');
}