@kirill-93

Почему так работает выборка Laravel?

Код
$user->entities->where('type', 1)->count()
Не работает, тогда как
$user->entities->where('type', '1')->count()
Работает. Тип поля type - integer, почему нужно передавать число строкой?
  • Вопрос задан
  • 442 просмотра
Решения вопроса 1
Denormalization
@Denormalization
Потому что where используется на коллекции.
Коллекция по-дефолту для where использует строгое сравнение (===).
В Eloquent есть баг, когда поле не распознается как int и идет строкой, а не числом.

Варианты решения:
- Явно указать в модели $casts = ['type' => 'int'];
- Использовать whereLoose('type', 1), тогда будетиспользоваться нестрогое сравнение (==)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы