Вставить несколько строк в laravel с полезной нагрузкой JSON

0

У меня есть запрос на угловой 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')
                )
            ));
        }
Теги:
laravel-4

1 ответ

0

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 здесь.

  • 0
    Когда я это делаю, я получаю сообщение об ошибке: SQLSTATE[HY000]: General error: 1364 Field 'utid' doesn't have a default value (SQL: insert into 'topics' () values ())
  • 0
    Что ж, это означает, что utid имеет значение NULL или пусто, и, вероятно, его необходимо установить, прежде чем пытаться создать модель.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню