itsoft
@itsoft
Директор веб-студи и дата-центра itsoft

Почему whereRaw в Laravel не поддерживает именованные плейсхолдеры как ::select?

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

Потому что обойти это через тот же ::select можно. Но не просто же так разработчики убрали такую простую функциональность.

Плейсхолдеры в виде ? на мой взгляд очень опасны, так как легко в массиве ошибиться порядком параметров.
  • Вопрос задан
  • 155 просмотров
Решения вопроса 1
Alex_Wells
@Alex_Wells
PHP/Kotlin
Welcome to Laravel. Реально обьективной причины почему так сделали - нет. Возможно им было лень, возможно посчитали ненужным, может не хотят рефакторить и вводить такие breaking changes.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Samuel_Leonardo
Вполне поддерживает
User::whereRaw('username = :username',[':username'=>'test'])->get();

Есть два ограничения,
1. именованные и позиционные параметры не должны использоваться одновременно
2. именнованные параметры должны быть уникальными
повторение так же будет вызывать ошибку, например'id =:id or something_else=:id'

Соответсвенно,если вы миксуете whereRaw используя именованные параметры с обычными where , вы получите ошибку
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы