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);
});
}