Laravel:只有当另一个Eloquent模型存在时才加入


Laravel: Join only if the other Eloquent model exists

我有两个型号,UserPackage。用户有许多包,每个包属于一个用户。我想从数据库中检索随机数量的用户,但前提是他们有包,比如

return self::orderBy('DB::raw('RAND()'))->packages()->take(6)->get();

packages()就这么简单:

return $this->hasMany($packageModel);

我在查询中混合了where('package.name', != ,''),但这不起作用(仍然返回具有空包的用户)。我想要的是随机抽取6个有包的用户。有什么解决办法吗?

Matt Burrow的解决方案

用途:

self::with('packages')->has('packages')->orderBy('DB::raw('RAND()'))->take(6)->get();

has方法将只返回存在此关系的模型。