Laravel 5.2本地范围的雄辩查询

时间:2017-01-14 20:11:03

标签: laravel eloquent local scopes

我想知道是否可以使用连接或子查询在两个或更多模型之间使用Laravel的本地范围?

例如,这是活动范围的用户模型。

class User extends Model
{
    public function scopeActive($query)
    {
      return $query->where('active', 1);
    }
}

其他模型是具有范围的UserSubscription。

class UserSubscription extends Model
{
    public function scopeType($query, $type)
    {
      return $query->where('type', $type);
    }
}

如何在单个查询中使用这两个范围?以下声明无效。

$users = Users::active()
        ->join('UserSubscription', 'users.id', '=','UserSubscription.user_id')
        ->UserSubscription::type()
        ->get();

我使用的是Laravel 5.2。 https://laravel.com/docs/5.3/eloquent#local-scopes

1 个答案:

答案 0 :(得分:0)

如果你在两个模型类中都建立了模型关系,你可以进行如下查询:

$users= User::where('active', 1)->whereHas('user_subscriptions', function ($query) {
    $query->where('type', $type);
})->get();