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