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