Разница между 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;'));