@karina_eax

Yii2 REST: Как правильно обработать post-запрос, в котором передается json-коллекция?

Заранее приношу свои извинения, если вопросы слишком глупые, но все с чего-то начинали.
Мне необходимо получить данные из post-запроса, которые передаются в виде json-коллекции.
Коллекция, допустим, имеет такой вид:
[{ "title":"test1", "description":"test1", "date":"17.01.12 11:11:11" },  {"title":"test2", "description":"test2", "date":"17.01.12 22:22:22" }]

Далее эти данные надо записать в БД. Как загрузить данные в модель? Я так понимаю, обычным load ничего не выйдет?
  • Вопрос задан
  • 1873 просмотра
Решения вопроса 1
tkutru
@tkutru
A programming cat.
Получаете post данные, декодируете их в массив, траверсите массив и грузите данные в модели и сохраняете их. Допустим вы передаете данные в post параметре arr а модель у вас называется Model
$data = json_decode(\Yii::$app->request->post('arr'), true);
foreach ($data as $chunk) {
    $model = new Model();
    $model->attributes = $chunk;
    $model->save();
}

Чтобы модель корректно сохранилась в бд нужно чтобы ее свойства удовлетворяли ее правилам валидации (см. метод rules в классе модели). Если не сохраняется в бд, можно проверять на ошибки, например вместо обычного сохранения прописывать
if (!$model->save()) {
    var_dump(['erorrs' => $model->errors]);
}

Ошибки выводятся в STDOUT просто для наглядности примера, вообще конечно их лучше не выводить сразу а логировать куда-то или оформлять в нормальный api ответ запрашивающему.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы