Недавно Laravel выпустила версию 5.3.Laravel 5.3 - Query Builder, начиная с orWhere
Есть некоторые инструкции по обновлению от 5.2 до 5.3 в следующей ссылке: https://laravel.com/docs/5.3/upgrade#upgrade-5.3.0
Красноречивых прицелы теперь принимают во внимание ведущего булевой области видимости ограничений. Например, если вы запускаете свою область действия с ограничением orWhere, она больше не будет преобразована в нормальный режим где. Если вы полагаетесь на эту функцию (например, добавляете несколько или Where ограничений в цикле), вы должны убедиться, что первое условие является нормальным, чтобы избежать любых логических проблем.
Если ваши области действия начинаются с ограничений, никаких действий не требуется. Помните, что вы можете проверить свой запрос SQL с помощью метода toSql запроса:
Это, похоже, делает вещи немного сложнее, и обновление только добавит к нему ограничений.
У нас есть внутренний пакет, и чтобы код был простым и как можно более аккуратным, есть часть, которая полагается на запуск запроса с помощью илиWhere(), и использует это, а также концепцию закрытия внутри рекурсивного метод. Как вы знаете, рекурсивные методы лучше всего держать его коротким и простым.
Согласно ноте обновления сейчас, это наверняка не в состоянии на Laravel 5.3
мне было просто интересно, если кто-нибудь знает причину того, почему такое поведение удаляется?
Спасибо!
Update:
Я мигрировали нашу систему к Laravel 5.3. Я подтверждаю, что это затронуто только в конструкторе Eloquent, а не в Query Builder (ранее «Свободный строитель»).
Даже фиксация (которая является чертовски изменением лота) относится только к Eloquent \ Builder. https://github.com/laravel/framework/issues/14829
В любом случае, чтобы быть в безопасности, я рекомендую сделать настройку соответствующим образом. Это то, что мы сделали, хотя мы знаем, что он не нарушил наш код (на сегодняшний день).
Я думаю, что для большей ясности с помощью илиWhere. Я думаю, что вы могли бы использовать первый, где это всегда верно, а затем цепочка с вашими orwheres, чтобы иметь такое же поведение. – Hammerbot
Да, я понимаю, что могу это сделать. Просто он добавляет несколько дополнительных строк (хотя я знаю, что это не так много). Но мне было просто интересно, какой смысл снимать эту гибкость? Звучит неловко, чтобы отбросить поведение за рамки, которые стоят перед таким большим сообществом. Это поведение также работает в Active Records CodeIgniter. Не уверен насчет Доктрины, хотя я считаю, что это похоже на CI. –