Запрос в Eloquent работает, когда он не должен - в MySQL он завершается неудачно, как и ожидалось - PullRequest
0 голосов
/ 11 сентября 2018

Если в MySQL настроено целочисленное поле, пустые значения не допускаются, значение по умолчанию равно нулю, и вы пишете запрос, пропускающий это поле, в Laravel запрос все еще выполняется, и значение по умолчанию, равное нулю, не используется, а вместо этогозаписывается как '0'.

Если я беру точный сгенерированный запрос от Eloquent / построителя запросов и запускаю его в MySQL, он завершается неудачно, справедливо заявляя, что у рассматриваемого поля должно быть значение по умолчанию.

Почему это расхождение?Что, черт возьми, делает eloquent / построитель запросов / pdo?!

создать синтаксис таблицы ниже:

CREATE TABLE `chapters` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`account_id` int(10) unsigned NOT NULL,
`season_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `chapters_account_id_index` (`account_id`),
KEY `chapters_season_id_index` (`season_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6060 DEFAULT CHARSET=utf8 
COLLATE=utf8_unicode_ci

Выполнение вставки и пропуск account_id в MySQL завершается неудачно - как и должно быть.Делать то же самое в Eloquent / Laravel - нет, несмотря на правильность сгенерированного запроса.

1 Ответ

0 голосов
/ 11 сентября 2018

Итак, я понял, что происходит.Laravel по умолчанию устанавливает строгие правила в false в config / database.php.Это отключает всевозможные параметры, касающиеся строгого режима, такие как полный групповой просмотр, строгий trans table.etc.

Что мы сделали, так это установили STRICT_ALL_TABLES в нашем my.cnf, а затем принудительно установили laravel в значение strict = true.Это решает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...