У меня есть запрос на угловой post
идущий на функцию контроллера laravel, вставляемую в db. Полезная нагрузка выглядит следующим образом:
[
{"id":1,"utid":"ABC","name":"Introduction","docId":1,"position":1},
{"id":2,"utid":"DEF","name":"Chapter One","docId":1,"position":2},
{"utid":"GHI","name":"asd","docId":1,"position":3}
]
Как извлечь входы и правильно их присвоить команде базы данных. Я представляю что-то с foreach
но я не знаю синтаксиса. Может кто-нибудь мне помочь?
foreach($topics as $topic => $insert )
{
DB::table('topics')->insert(array(
array(
'utid' => Input::json('utid'),
'name' => Input::json('name'),
'docId' => Input::json('docId'),
'position' => Input::json('position')
)
));
}
json_decode
попробуйте json_decode
:
$json = '[
{"id":1,"utid":"ABC","name":"Introduction","docId":1,"position":1},
{"id":2,"utid":"DEF","name":"Chapter One","docId":1,"position":2},
{"utid":"GHI","name":"asd","docId":1,"position":3}
]';
$data = json_decode($json);
Затем вы можете использовать Post::create($data);
для создания новых записей.
Для этого вам также понадобится настроить вашу модель, чтобы разрешить массовое назначение для этих полей:
protected $fillable = ['utid', 'name', 'Introduction'];
Вы можете узнать больше об этом в официальной документации Laravel здесь.
SQLSTATE[HY000]: General error: 1364 Field 'utid' doesn't have a default value (SQL: insert into 'topics' () values ())
utid
имеет значение NULL или пусто, и, вероятно, его необходимо установить, прежде чем пытаться создать модель.