Silber\Bouncer\Database\Queries\Roles::constrainWhereAssignedTo PHP Метод

constrainWhereAssignedTo() публичный Метод

Constrain the given roles query to those that were assigned to the given authorities.
public constrainWhereAssignedTo ( Builder $query, string | Model | Illuminate\Database\Eloquent\Collection $model, array $keys = null ) : void
$query Illuminate\Database\Eloquent\Builder
$model string | Illuminate\Database\Eloquent\Model | Illuminate\Database\Eloquent\Collection
$keys array
Результат void
    public function constrainWhereAssignedTo($query, $model, array $keys = null)
    {
        list($model, $keys) = Helper::extractModelAndKeys($model, $keys);
        $query->whereExists(function ($query) use($model, $keys) {
            $table = $model->getTable();
            $key = "{$table}.{$model->getKeyName()}";
            $pivot = Models::table('assigned_roles');
            $roles = Models::table('roles');
            $prefix = Models::prefix();
            $query->from($table)->join($pivot, $key, '=', $pivot . '.entity_id')->whereRaw("{$prefix}{$pivot}.role_id = {$prefix}{$roles}.id")->where("{$pivot}.entity_type", $model->getMorphClass())->whereIn($key, $keys);
        });
    }