Size: a a a

Laravel для начинающих

2021 March 11

AH

Andrey Helldar in Laravel для начинающих
Vasile Papuc
ребят подскажите пожалуйста где ошибка
у меня отправляется ид 10 надо чтоб обновил только те поля у каторые user_id and to_id совподает между собой
return static::query()
     ->where('id', '<=', $this->id)
     ->whereNull('seen_at')
     ->where(function (Builder $builder) {
         $builder
           ->where('to_id', $this->to_id)
           ->orWhere('user_id', $this->user_id)
     })
     ->update([
         'seen_at' => now(),
     ]);
источник

VP

Vasile Papuc in Laravel для начинающих
Alex
orWhere у тебя сработал на весь запрос, а не только на предыдущий where
так я понимаю это, но не врубаюсь почему так
источник

A

Alex in Laravel для начинающих
Vasile Papuc
так я понимаю это, но не врубаюсь почему так
@Helldar описал решение))
источник

AH

Andrey Helldar in Laravel для начинающих
Vasile Papuc
так я понимаю это, но не врубаюсь почему так
Твоё условие читается так:
id < $id И seen_at = null И to_id = $id
ИЛИ user_id = $id

То есть либо user_id  совпадает с переменной, либо всё остальное.
источник

VP

Vasile Papuc in Laravel для начинающих
понял но что ха нафиг, must be an instance of Illuminate\\Database\\Schema\\Builder, instance of Illuminate\\Database\\Eloquent\\Builder
источник

AH

Andrey Helldar in Laravel для начинающих
Vasile Papuc
понял но что ха нафиг, must be an instance of Illuminate\\Database\\Schema\\Builder, instance of Illuminate\\Database\\Eloquent\\Builder
В use Schema\Builder. Если ты прописываешь для запроса, который я указал, там надо Eloquent\Builder.
Вот и получается, что ты ждёшь схему, а конструктор тебе ёлку суёт)
Конечно, в колбэке тип можно и не указывать, но тогда подсказки методов в IDE не будут работать.
источник

VP

Vasile Papuc in Laravel для начинающих
источник

VP

Vasile Papuc in Laravel для начинающих
сейчяс остановился до 10
источник

VP

Vasile Papuc in Laravel для начинающих
источник

VP

Vasile Papuc in Laravel для начинающих
этот лишний
источник

VP

Vasile Papuc in Laravel для начинающих
только 4-3
или 3-4
источник

AH

Andrey Helldar in Laravel для начинающих
Vasile Papuc
этот лишний
return static::query()
     ->where('id', '<=', $this->id)
     ->whereNull('seen_at')
     ->where(function (Builder $builder) {
         $builder
           ->where('to_id', $this->to_id)
           ->orWhere('user_id', $this->user_id)
     })
     ->dd();

Вернёт чистый запрос с данными на select. Попробуй вручную в базу кинуть этот запрос и посмотри что он вообще находит.
источник

AH

Andrey Helldar in Laravel для начинающих
Andrey Helldar
return static::query()
     ->where('id', '<=', $this->id)
     ->whereNull('seen_at')
     ->where(function (Builder $builder) {
         $builder
           ->where('to_id', $this->to_id)
           ->orWhere('user_id', $this->user_id)
     })
     ->dd();

Вернёт чистый запрос с данными на select. Попробуй вручную в базу кинуть этот запрос и посмотри что он вообще находит.
Теоретически, запрос должен иметь вид:

SELECT
 *
FROM
 journals
WHERE id <= 10
 AND seen_at IS NULL
 AND (
   to_id = 4
   OR user_id = 3
)
источник

VP

Vasile Papuc in Laravel для начинающих
источник

VP

Vasile Papuc in Laravel для начинающих
то же самое
источник

AH

Andrey Helldar in Laravel для начинающих
Vasile Papuc
Ну всё правильно. to_id = 3 ИЛИ user_id = 4
источник

AH

Andrey Helldar in Laravel для начинающих
Vasile Papuc
а тебе как надо?
источник

AH

Andrey Helldar in Laravel для начинающих
3-4 ИЛИ 4-3?
источник

VP

Vasile Papuc in Laravel для начинающих
да
источник

e

eldarda in Laravel для начинающих
Подскажите пж, как тут получить результат метода Alert::getIcon для каждого айтема?
источник