W
W
WebDev2016-05-26 11:47:35
Laravel
WebDev, 2016-05-26 11:47:35

Why does Laravel fetch work this way?

The code
$user->entities->where('type', 1)->count()
doesn't work when it
$user->entities->where('type', '1')->count()
works. The type of the type field is integer, why is it necessary to pass a number as a string?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
D
D', 2016-05-26
@kirill-93

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

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question