Laravel где в операторе обновления в контроллере - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть эта функция в моем контроллере, которая работает:

foreach($models as $model) {
    if ($model->EindDatum < Carbon::now() && $model->email_send == 0) {
        DB::table('SSL')->where('userID', Auth::id())->update(['email_send' => 1]);
        $model->user()->first()->notify(new \App\Notifications\TaksComplete);
    }
}

Теперь я хотел бы изменить выражение обновления на следующее:

DB::table('SSL')->where('userID', Auth::id(), 'EindDatum' < Carbon::now())->update(['email_send' => 1]);

Но это не работает. это в моем утверждении where, но я не знаю, что я делаю неправильно?

Но это все равно обновляет все столбцы email_send в моей базе данных. хотя теперь он должен обновлять только те, что были в прошлом.

Я не получаю сообщение об ошибке

1 Ответ

1 голос
/ 19 февраля 2020

Оператор where работает не так

->where('userID', Auth::id(), 'EindDatum' < Carbon::now())

Проблема в том, что предложение where не знает, как обработать выражение.

Вам необходимо обновить ваш код следующим образом:

 DB::table('SSL')
 ->where('userID', Auth::id())
 ->where('EindDatum', '<', Carbon::now())
 ->update(['email_send' => 1]);

В результате вы получите Where Userid = Auth::id() AND EindDatum < Carbon::now()

, где Auth::id() и Carbon::now заменены значениями, возвращенными с фасадов.

Редактировать: Облегчить чтение кода.

Подробнее об операторах where

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