Разница между raw SQL-функциями Laravel
кажется, я не единственный человек, борющийся с различиями между методами DB::raw(), DB::select(), DB::statement () и DB::unprepared (). Кажется, что почти нужно попробовать данный оператор SQL со всеми 4, чтобы определить, который будет работать. Может ли кто-нибудь прояснить, как они относятся друг к другу и какие использовать для каких целей?
1 ответов
Я постараюсь уточнить:
DB:: raw ()
Он генерирует необработанную и дезинфицированную строку SQL, передаваемую другим запросам/операторам, предотвращая SQL-инъекции. Должен использоваться со всем и никогда в одиночку. И вы никогда не должны отправлять не дезинфицированную строку в свой запрос/инструкции.
DB::select(DB::raw('select * from whatever'));
DB:: select ()
для простой выбор:
DB::select(DB::raw('select * from whatever'));
DB:: statement ()
Я думаю, что он работает с selects, но должен быть используется для команд SQL запрос:
DB::statement(DB::raw('update whatever set valid = true;'));
DB:: unprepared ()
все команды SQL в Laravel подготовлены по умолчанию, но иногда вам нужно выполнить команду в неподготовленном режиме, потому что некоторые команды в некоторой базе данных не могут быть выполнены в подготовленном режиме. Вот вопрос, который я открыл об этом:https://github.com/laravel/framework/issues/53
DB::unprepared(DB::raw('update whatever set valid = true;'));