Отключение строгого режима MySQL только для одного запроса Laravel 5.6

Я хочу отключить строгий режим MySQL только для одного запроса внутри контроллера, а не для всего приложения laravel,

Я знаю риски отключения строгого режима MySQL, поэтому не хочу отключать его для всего приложения из config / database.php,

Я столкнулся с проблемой только с одним запросом во всем моем приложении, поэтому я хочу отключить его в своем контроллере, прежде чем запускать этот запрос только один раз!

Пожалуйста, помогите мне, есть ли способ в данной ситуации.

для какого запроса вам нужен ??

Parth Shah 26.07.2018 10:36

выдается ошибка в группе по запросу, я использую laravel eloquent, App \ DefaultMilestone :: where ('d_dept', $ user_dept) -> select ('d_nature') -> groupby ('d_nature') -> get () ; когда я удаляю выбор, он выдаст ошибку

Mȍhǟmmǟd Șamȋm 26.07.2018 10:41
stackoverflow.com/questions/40881773/…
Parth Shah 26.07.2018 10:43

Мне нужно выбрать * или выбрать идентификатор строки, по крайней мере, с помощью группы. таблица уже содержит данные, и я не могу изменить структуру таблицы, когда я отключу строгий режим из конфигурации / базы данных, это не даст никаких ошибок

Mȍhǟmmǟd Șamȋm 26.07.2018 10:44

но как это сделать в laravel

Mȍhǟmmǟd Șamȋm 26.07.2018 10:45
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
8
5
7 103
4

Ответы 4

В config / database.php сделайте так:

'connections' => [

    'mysql' => [

        // Behave like MySQL 5.6

        'strict' => false,

        // Behave like MySQL 5.7
        'strict' => true,
    ]

]

это изменит строгий режим для всего приложения, и это будет рискованно

Mȍhǟmmǟd Șamȋm 26.07.2018 11:43

Используйте это для 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'");

Меня устраивает. Какой запрос вы выполняете? Почему он конфликтует со строгим режимом?

Jonas Staudenmeir 28.07.2018 14:09

Приложение \ DefaultMilestone :: where ('d_dept', $ user_dept) -> select ('d_nature') -> groupby ('d_nature') -> get ();

Mȍhǟmmǟd Șamȋm 30.07.2018 07:02

Почему этот запрос не работает в строгом режиме? Что за ошибка?

Jonas Staudenmeir 30.07.2018 11:56

Это работает, когда я хочу выбрать * и сгруппировать по b_nature, тогда это выдаст ошибку в строгом режиме!

Mȍhǟmmǟd Șamȋm 31.07.2018 12:40

Вы должны отключить ONLY_FULL_GROUP_BY, я обновил свой ответ.

Jonas Staudenmeir 31.07.2018 13:09

возможно, это работает для вас, но не работает для меня, это не значит, что ваш ответ неправильный, спасибо за помощь, дорогой!

Mȍhǟmmǟd Șamȋm 11.08.2018 05:47

Вы можете изменить это значение во время выполнения.

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');

}

Кажется, это работает, но я пробовал, и это не работает, вы пробовали?

Mȍhǟmmǟd Șamȋm 28.07.2018 09:04

Я тоже пробовал эту конфигурацию (['database.connections.mysql.strict' => false]);

Mȍhǟmmǟd Șamȋm 28.07.2018 09:18

Изменение строгого режима во время выполнения

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();

Другие вопросы по теме