Ошибка повторяющейся записи при обновлении с использованием входящего объекта - PullRequest
0 голосов
/ 19 сентября 2018

Я пробую новый способ обновления событий (не событий Laravel, думайте как вечеринка или кулинария) для моего сервера.Моя идея состояла в том, чтобы отправить Событие с обновленной информацией в контроллер через аргументы запроса.Это обновленное событие будет иметь тот же идентификатор, что и событие, для которого оно является обновлением.Примером может служить вечеринка по случаю дня рождения, начинающаяся в 8:00 вечера, уже сохраненная в базе данных.Я передаю обновленную версию этого события с тем же идентификатором, но время начала 9:00 вечера.Моя цель - избежать перечисления всех атрибутов участника в контроллере обновлений.Проблема, с которой я столкнулся, заключается в том, что, когда я сохраняю обновленное событие, я сталкиваюсь с нарушением повторяющихся записейСобытия имеют одинаковый идентификатор, поэтому я немного запутался, почему не просто выполнить обновление.Я предполагаю, что это что-то внутри способа, которым Laravel обрабатывает идентификаторы объектов при обновлении БД.Любая помощь или предложения?Код ниже.

Контроллер

public function update() {
        //Get updated event from request
        $event = request()->event;

        //Ensure current user created event
        if(Auth::user()->createdEvent($event)) {
            $event->save();
            return Constants::EVENT_UPDATED_SUCCESSFULLY;
        }

        return Constants::EVENT_FAILED_TO_UPDATE;
    }

Тест

public function testUpdate() {
        //User for creating events
        $user = factory(User::class)->create();

        //Create base event and save to db
        $event = factory(Event::class)->create([
            'user_id' => $user->id
        ]);

        //Matching event with all modified attributes
        $modifiedEvent = factory(Event::class)->make([
            'id' => $event->id,
            'user_id' => $user->id
        ]);

        $res = $this->call('POST', 'api/event/update', [
            'event' => $modifiedEvent,
            'api_token' => $user->api_token
        ]); 
    ............
}

1 Ответ

0 голосов
/ 21 сентября 2018

Базовый дизайн в структуре Laravel предотвращает то, что я пытался сделать выше.Самый простой подход в конечном итоге заключался в использовании функций getAttributes () и setRawAttributes ().https://laravel.com/api/5.3/Illuminate/Database/Eloquent/Model.html#method_getAttributes

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...