Laravel - Eloquent:从用户 post table 处获取 posts
Laravel - Eloquent: get posts from user with users post table
我找了很多都没有找到任何答案,所以我希望你能帮助我!
我有三个表:posts
、users
和 post_users
。
Post_users
包含两列:user_id
和 post_id
。
我需要获取 Eloquent 用户的所有帖子。有什么想法吗?
如果你没有建立关系,试试这个。然而,建立关系是首选。 PostUsers 和 Posts 是 post 用户和 posts tables 的假定模型,并且 post 作为 posts table 的列。这给出了登录用户的 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()
的路径。
如你所愿。 User 和 Post 之间的关系是多对多
-定义关系
// In User model
public function posts(){
return $this->belongsToMany(Post::class);
}
// In Post model
public function users(){
return $this->belongsToMany(User::class);
}
- Table结构
- users
id
- posts
id
- post_user
user_id
post_id
- 获取一个用户的所有post
$posts = User::find($user_id)->posts
试试这个
来自控制器:
dd(Auth::user()->posts);
App/User
public function posts()
{
return $this->belongsToMany('App\Entities\posts', 'post_users', 'user_id', 'post_id');
}
型号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);
在用户模型上与 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);
我找了很多都没有找到任何答案,所以我希望你能帮助我!
我有三个表:posts
、users
和 post_users
。
Post_users
包含两列:user_id
和 post_id
。
我需要获取 Eloquent 用户的所有帖子。有什么想法吗?
如果你没有建立关系,试试这个。然而,建立关系是首选。 PostUsers 和 Posts 是 post 用户和 posts tables 的假定模型,并且 post 作为 posts table 的列。这给出了登录用户的 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()
的路径。
如你所愿。 User 和 Post 之间的关系是多对多
-定义关系
// In User model
public function posts(){
return $this->belongsToMany(Post::class);
}
// In Post model
public function users(){
return $this->belongsToMany(User::class);
}
- Table结构
- users
id
- posts
id
- post_user
user_id
post_id
- 获取一个用户的所有post
$posts = User::find($user_id)->posts
试试这个
来自控制器:
dd(Auth::user()->posts);
App/User
public function posts()
{
return $this->belongsToMany('App\Entities\posts', 'post_users', 'user_id', 'post_id');
}
型号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);
在用户模型上与 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);