SQL запрос похож на концепцию множества (дополнения или исключения) - PullRequest
0 голосов
/ 05 февраля 2020

Мне нужна твоя помощь. Я просто хочу отобразить имя всех пользователей (из пользователей таблицы), которых нет в табличных документах, но в текущей дате

Я пытался, но мне не удалось Вот мой код

public function activeUser(){

    $documents = DB::table('users')
        ->leftJoin('documents', 'users.id', '=', 'documents.user_id')
        ->select('users.fname','users.mname','users.sname','documents.created_at')
        ->where('documents.user_id',null)
        ->where('documents.created_at',null)
        ->get();    

    return view('activity.activity')->with('documents', $documents);
}

Я не знаю, чтобы добавить текущую дату в предложении, где. Приведенный выше код предоставил мне всех пользователей, которые отмечены в документах таблицы, но если пользователь существует в документах один раз, он всегда будет считаться в этой таблице документов.

1 Ответ

0 голосов
/ 05 февраля 2020

Вы можете использовать "whereBetween" (https://laravel.com/docs/6.x/queries#where -clauses ).

public function activeUser(){

    $yesterday = Carbon::yesterday();
    $today = Carbon::today();
    $documents = DB::table('users')
        ->leftJoin('documents', 'users.id', '=', 'documents.user_id')
        ->select('users.fname','users.mname','users.sname','documents.created_at')
        ->where('documents.user_id',null)
        ->whereBetween('documents.created_at', [$yesterday, $today])
        ->get();    

    return view('activity.activity')->with('documents', $documents);
}

Помните, что вы также можете использовать "whereNotInBetween", если это лучше соответствует вашей бизнес-логике c case.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...