Переопределение create метода (несколько записей в одном запросе)

Всё что касается построения API
Закрыто
Trueman
Сообщения: 23
Зарегистрирован: 2016.10.22, 15:46

Переопределение create метода (несколько записей в одном запросе)

Сообщение Trueman »

Подскажите как переопределить метод create, если в запросе приходит такое:

Код: Выделить всё

{
"logs":[
{
"logId":925244,
"time":1510826281,
"empId":"",
"internalEmpId":0,
"accessPoint":1,
"direction":2,
"keyHex":"5AB860"
},
{
"logId":925247,
"time":1510826858,
"empId":"",
"internalEmpId":0,
"accessPoint":1,
"direction":2,
"keyHex":"5AB860"
}
]
}
и надо создать несколько записей?
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Переопределение create метода (несколько записей в одном запросе)

Сообщение unknownby »

Trueman писал(а): 2021.09.10, 13:15 Подскажите как переопределить метод create, если в запросе приходит такое:
и надо создать несколько записей?
Советую пересмотреть ваше логирование, ведь обычно выполняется какое-то одно действие и оно сохраняется в БД.
Если нужно сохранять 2 и более: парсим данные и циклом записываем в БД.
Trueman
Сообщения: 23
Зарегистрирован: 2016.10.22, 15:46

Re: Переопределение create метода (несколько записей в одном запросе)

Сообщение Trueman »

Получилось топорно, но работает.

Код: Выделить всё

public function actionCreate()
    {
        $json_obj = (object)json_decode(Yii::$app->getRequest()->getRawBody());
        foreach ($json_obj->logs as $json) {
            $model = new Sigurapi();
            $model->LogId = $json->logId;
            $model->confirmedLogId = $json->logId;
            $model->Time = $json->time;
            $model->EmpId = $json->empId;
            $model->InternalEmpId = $json->internalEmpId;
            $model->AccessPoint = $json->accessPoint;
            $model->Direction = $json->direction;
            $model->KeyHex = $json->keyHex;
            if ($model->save()) {
                continue;
            } elseif (!$model->hasErrors()) {
                throw new ServerErrorHttpException('Failed to create the object for unknown reason.');
            }
        }
        $response = Yii::$app->getResponse();
        $response->setStatusCode(201);
        $id = implode(',', array_values($model->getPrimaryKey(true)));
        $response->getHeaders()->set('Location', Url::toRoute(['view', 'id' => $id], true));
        return $model;
    }
Т.к. мне надо вернуть во внешнюю систему только последнюю запись, мне подходит.
Закрыто