Seeder, ошибка при вставке json-данных
Есть таблица с колонкой properties, содержащей json-данные
$table->json('properties')->nullable();
В файле Seeder нужно добавить json-данные
$sections = [
[
'name' => 'section1',
'content' => 'content1',
'properties' => json_encode([
"link" => "/link"
]),
],
...
DB::table('sections')->insert($sections);
но при импорте данных выдаёт такую ошибку:
Insert value list does not match column list: 1136 Column count doesn't match value count at row 2
Если убрать json_encode то выдаёт ошибку:
Array to string conversion
Как правильно вставлять json-данные ?
Ответы (1 шт):
Автор решения: Константин Аксарин
→ Ссылка
первая ошибка пишет что количество вставляемых значений не соответствует количеству столбцов. Похоже что у вас дальше ошибка, не в первом массиве данных. проверьте весь массив данных
вторая ошибка все верно. нужно делать кодирование массива.
Я обычно делаю вставку данных через модель
Sections::create($section) в которой описано что данное поле json, и поле в этом случае не кодирую а оставляю массивом. и никаких проблем нет.