Я использую Laravel 5.5 и October CMS 1.0 с базой данных MySQL 5.6 и PHP 7.4.
У меня есть несколько моделей с ключами целочисленного автоинкремента id.
Настройки модели по умолчанию остались неизменными — я не изменил ни одного из параметров, связанных с ключами.
Я могу воспроизвести проблему с помощью самой простой модели — с помощью int $id и строки Только свойства $test.
Что происходит:
Когда я вызываю метод из шаблона Twig в свой контроллер, первый вызов ::create вернет модель с $id, установленным в 0.
Обе записи создаются в базе данных.
После этого каждый вызов ::create() вернет модель с правильно установленным $id.
Я потратил некоторое время на изучение этого вопроса в Интернете, и единственная проблема, связанная с моей проблемой, была связана с телескопом, которым я не пользуюсь.
База данных поля имеют определенный первичный ключ.
Как я уже упоминал, только первый вызов завершается неудачно. Каждый последующий вызов будет работать нормально.
Мой текущий способ решения этой проблемы заключался в создании фиктивной таблицы, в которой я создавал записи, прежде чем продолжить логику функции.
Это глупо, но позволяет мне продолжить, прежде чем прикидывать решить проблему.
Я не уверен, с чего начать поиск.
Хуже всего то, что эта проблема не затрагивает мои сеялки. Там модели прекрасно получают $id сразу после первого вызова создания.
Любые идеи приветствуются.
код, который я использовал для тестирования:
Таблица базы данных:
create table if not exists inx_test_table
(
id int unsigned auto_increment primary key,
name varchar(64) not null,
created_at timestamp null,
updated_at timestamp null
) collate = utf8mb4_unicode_ci;
Ветка:
{{
form_open({
'data-request': __SELF__ ~ "::onTestModel",
'data-request-success': 'testUpdate(data)'
})
}}
{{ form_input( 'text', 'test_input', '') }}
First ID: Second ID:
{{ form_button ('Annuler', {'data-dismiss':'modal', 'class': 'btn btn-secondary'} ) }}
{{ form_submit ('Suite ...', {'class': 'btn btn-primary' } )}}
{{ form_close() }}
function testUpdate(data) {
console.log(data);
$('#first_id').text(data.first_id);
$('#second_id').text(data.second_id);
}
Функция в контроллере:
public function onTestModel() {
$data = input();
$model1 = TestModel::create([
'name' => $data['test_input']
]);
$model2 = TestModel::create([
'name' => $data['test_input']
]);
return ["first_id" => $model1->id, "second_id" => $model2->id];
}
Модель:
Подробнее здесь: https://stackoverflow.com/questions/791 ... he-model-i
Почему первый вызов метода ::create() не устанавливает поле id в модели в Laravel? ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Почему первый вызов метода ::create() не устанавливает поле id в модели в Laravel?
Anonymous » » в форуме Php - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Насколько этот вызов виртуального метода быстрее, чем вызов запечатанного метода?
Anonymous » » в форуме C# - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-