/** * {@inheritdoc} */ public function applyFilterConstraint(QueryBuilder $builder, $data) { if (empty($data)) { return; } $builder->whereExists(function ($q) use($data) { $this->initNestedQuery($q, $this->parseData($data)); }); }
/** * Add an exists clause to the query. * * @param \Closure $callback * @param string $boolean * @param bool $not * @return $this * @static */ public static function whereExists($callback, $boolean = 'and', $not = false) { return \Illuminate\Database\Query\Builder::whereExists($callback, $boolean, $not); }
/** * Select users which have the required permission * @param \Illuminate\Database\Query\Builder $query * @param string $permission Permission to check */ public function scopeWithPermission($query, $permission) { $query->whereExists(function ($query) use($permission) { $query->select(DB::Raw('1'))->from('permission_role')->whereRaw('permission_role.role_id = users.role_id')->where('permission_role.permission_id', '=', function ($query) use($permission) { $query->select('id')->from('permissions')->where('ime', '=', $permission); }); }); }
/** * * @param \Illuminate\Database\Query\Builder $query * @param int $user_id * @return \Illuminate\Database\Query\Builder */ public function scopeWithUser($query, $user_id) { return $query->whereExists(function ($query) use($user_id) { $query->select(DB::Raw('1'))->from('predmet_user')->whereRaw('predmet_user.predmet_id = predmeti.id')->where('predmet_user.user_id', '=', $user_id); }); }