Laravel 5.6 обновляет внешний ключ в базе данных после сохранения ресурса - PullRequest
1 голос
/ 29 мая 2019

У меня есть ресурс 'imagerequest' и ресурс 'events'. Для каждого из этих ресурсов у меня есть модал, и соотношение выглядит следующим образом:

1 Imagerequest может иметь много событий:

Модель запроса изображения:

/**
 * Get the events for an Image Request.
 */
public function events()
{
    return $this->hasMany('App\Event');
}

Модель события:

/**
 * Get the Image Request that belongs to the Event
 */
public function imagerequest()
{
    return $this->belongsTo('App\ImageRequest');
}

Теперь в моей форме при создании нового Imagerequest у меня есть другая форма для создания нескольких событий, но моя проблема заключается в том, что при сохранении нового события отсутствует image_request_id, потому что новый image_request_id еще не существует, так как я не создал запрос изображения еще.

Так что в моей базе данных image_request_id всегда пусто

id user_id image_request_id location trainnr created_at  updated_at
1  53      NULL             location NULL    2019-05-28  10:49:45 2019-05-28 10:49:45

Нужно ли мне писать запрос на обновление после сохранения запроса изображения, чтобы заполнить этот image_request_id?

Как создать новое событие в моем EventController:

$event = Auth::user()->events()->save(new Event($request->all()));

Как создать новый Imagerequest в контроллере Imagerequest:

$imageRequest = new ImageRequest(
    array_merge(
        $request->all(),
        ['status' => self::STATUS_NEW]
    )
);

$imageRequest = Auth::user()->imageRequests()->save($imageRequest);

РЕДАКТИРОВАТЬ мой интерфейс для добавления события

enter image description here

1 Ответ

1 голос
/ 29 мая 2019

Вам необходимо добавить отношение

. Посмотрите документы для получения дополнительной помощи с этим

. На мой взгляд, вы можете сделать это примерно так:

$event = Auth::user()->events()->save(new Event($request->all()));

$imageRequest = new ImageRequest(
    array_merge(
        $request->all(),
        ['status' => self::STATUS_NEW]
    )
);

$event->imagerequest()->create($imageRequest);

Я бы также посоветовал вам проверить любые данные запроса, прежде чем обновлять базу данных.

РЕДАКТИРОВАТЬ на основе дополнительной информации

youможет сделать что-то вроде этого:

$imageRequest->attach($request->eventIds);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...