Запрос подсчета Laravel

Что-то странно. Я пытаюсь проверить, дает ли запрос хотя бы один объект в коллекции. Это всегда работало, но теперь это уже не так.

$myObj = User::whereRaw("lower(name) = '".strtolower(trim("toto"))."'");
if ( $myObj->count() > 0) {
   \Log::info( "Good" );
} 

Код перестает работать. но если я добавлю:

$myObj = User::whereRaw("lower(name) = '".strtolower(trim("toto"))."'");
\Log::info( $myObj->count() );
if ( $myObj->count() > 0) {
    \Log::info( "Good" );
} 

он отображает количество объектов, возвращенных запросом, прежде чем сломать код.

Что не так, пожалуйста?

Пожалуйста, разместите код внутри оператора if

thisiskelvin 03.06.2019 15:56

Я не могу воспроизвести эту проблему, но я настоятельно рекомендую вам не делать этого. Запуск ->count() дважды приведет к двойному запуску оператора MySQL SELECT COUNT(*).... Если вы хотите получить коллекцию, а затем подсчитать, вам нужно сделать ->get() после whereRaw, и в этом случае count() будет подсчетом коллекции, который является операцией с постоянным временем.

apokryfos 03.06.2019 15:57

Странно, но пока я перехожу на "пустой" метод. но я хотел бы понять, что не так, и почему я получаю такое поведение

Cutis 03.06.2019 16:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
3
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Возможно, вы опускаете метод get() для получения всех записей, возможно, это может быть:

$myObj = User::whereRaw("lower(name) = '".strtolower(trim("toto"))."'")->get();

Да, это ответ. Я заметил это через несколько минут после моего сообщения, но я забыл разместить его здесь. Спасибо @eduardo. Надеюсь, это может помочь другим разработчикам laravel, если они пропустят это, как я. Спасибо всем

Cutis 05.06.2019 09:48

Другие вопросы по теме