Я хочу отключить строгий режим MySQL только для одного запроса внутри контроллера, а не для всего приложения laravel,
Я знаю риски отключения строгого режима MySQL, поэтому не хочу отключать его для всего приложения из config / database.php,
Я столкнулся с проблемой только с одним запросом во всем моем приложении, поэтому я хочу отключить его в своем контроллере, прежде чем запускать этот запрос только один раз!
Пожалуйста, помогите мне, есть ли способ в данной ситуации.
выдается ошибка в группе по запросу, я использую laravel eloquent, App \ DefaultMilestone :: where ('d_dept', $ user_dept) -> select ('d_nature') -> groupby ('d_nature') -> get () ; когда я удаляю выбор, он выдаст ошибку
Мне нужно выбрать * или выбрать идентификатор строки, по крайней мере, с помощью группы. таблица уже содержит данные, и я не могу изменить структуру таблицы, когда я отключу строгий режим из конфигурации / базы данных, это не даст никаких ошибок
но как это сделать в laravel






В config / database.php сделайте так:
'connections' => [
'mysql' => [
// Behave like MySQL 5.6
'strict' => false,
// Behave like MySQL 5.7
'strict' => true,
]
]
это изменит строгий режим для всего приложения, и это будет рискованно
Используйте это для MySQL ≤5.7 (взято из здесь):
DB::statement("set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'");
// your query
DB::statement("set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'");
Меня устраивает. Какой запрос вы выполняете? Почему он конфликтует со строгим режимом?
Приложение \ DefaultMilestone :: where ('d_dept', $ user_dept) -> select ('d_nature') -> groupby ('d_nature') -> get ();
Почему этот запрос не работает в строгом режиме? Что за ошибка?
Это работает, когда я хочу выбрать * и сгруппировать по b_nature, тогда это выдаст ошибку в строгом режиме!
Вы должны отключить ONLY_FULL_GROUP_BY, я обновил свой ответ.
возможно, это работает для вас, но не работает для меня, это не значит, что ваш ответ неправильный, спасибо за помощь, дорогой!
Вы можете изменить это значение во время выполнения.
public function doQueryWithoutStrictMode{
config('database.connections.mysql.strict', false);
DB::select('The query you want to make, and that should work!');
And then, if you later want to do another query in strict mode withing the same
method you can enable it like this.
config('database.connections.mysql.strict', true);
DB::select('your other query with strict mode');
}
Кажется, это работает, но я пробовал, и это не работает, вы пробовали?
Я тоже пробовал эту конфигурацию (['database.connections.mysql.strict' => false]);
config()->set('database.connections.mysql.strict', false);
\DB::reconnect(); //important as the existing connection if any would be in strict mode
Model::select()->get(); // your query called in non strict mode
//now changing back the strict ON
config()->set('database.connections.mysql.strict', true);
\DB::reconnect();
для какого запроса вам нужен ??