App\Http\Controllers\User\Settings\UserController::index PHP Method

index() public method

index. show user list
public index ( Illuminate\Http\Request $request ) : Xpressengine\Presenter\RendererInterface
$request Illuminate\Http\Request
return Xpressengine\Presenter\RendererInterface
    public function index(Request $request)
    {
        $query = $this->handler->users()->query();
        // resolve group
        if ($group = $request->get('group')) {
            $query = $query->whereHas('groups', function (Builder $q) use($group) {
                $q->where('groupId', $group);
            });
        }
        // resolve status
        if ($status = $request->get('status')) {
            $query = $query->where('status', $status);
        }
        // resolve search keyword
        // keyfield가 지정되지 않을 경우 email, displayName를 대상으로 검색함
        $field = $request->get('keyfield', 'email,displayName');
        $field = $field === '' ? 'email,displayName' : $field;
        if ($keyword = $request->get('keyword')) {
            $query = $query->where(function (Builder $q) use($field, $keyword) {
                foreach (explode(',', $field) as $f) {
                    $q->orWhere($f, 'like', '%' . $keyword . '%');
                }
            });
        }
        $users = $query->orderBy('createdAt', 'desc')->paginate();
        // get all groups
        $groups = $this->handler->groups()->all();
        $selectedGroup = null;
        if ($group !== null) {
            $selectedGroup = $this->handler->groups()->find($group);
        }
        return XePresenter::make('user.settings.user.index', compact('users', 'groups', 'selectedGroup'));
    }