Laravel 获取属于其他记录的记录
我正在尝试获取属于其他记录的记录。这是问题的分类 我有以下文章记录,希望获得拥有状态为(0)的文章的用户: 文章模型如下所示:Laravel 获取属于其他记录的记录,laravel,eloquent,Laravel,Eloquent,我正在尝试获取属于其他记录的记录。这是问题的分类 我有以下文章记录,希望获得拥有状态为(0)的文章的用户: 文章模型如下所示: <?php namespace App; use Illuminate\Database\Eloquent\Model; class Article extends Model { protected $fillable = ['user_id', 'title', 'content', 'status']; public function
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
protected $fillable = ['user_id', 'title', 'content', 'status'];
public function user()
{
return $this->belongsTo('App\User', 'user_id');
}
}
是否有其他方法获取这些用户的文章记录?您可以从相反方向执行此操作:
User::whereHas('articles', fn ($q) => $q->whereStatus(0))->get();
获取具有状态为0的任何文章的所有用户
您只需在用户
上设置文章
关系即可
如果您希望所有这些用户模型的articles
关系也仅加载状态为0的文章,则可以执行受约束的即时加载:
User::whereHas('articles', $filter = fn ($q) => $q->whereStatus(0))
->with('articles', $filter)
->get();
如果您从$articles
开始,您可以加载用户关系,然后从集合中提取它们:
$articles->load('user')->pluck('user')->unique()
whereHas
与
加载
unique
pluck
$articles = Article::with('user')->whereStatus(0)->get();
尝试惰性加载关系。有关更多信息,请参阅下面的链接
$articles->load('user')->pluck('user')->unique()
$articles = Article::with('user')->whereStatus(0)->get();