Ларавел Нова - Два "отношения один ко многим" - PullRequest
0 голосов
/ 07 декабря 2018

Сообщество,

Я хочу иметь два выбора из одной таблицы в Nova.Должно быть возможно выбрать одно Местоположение в Laravel Nova как start_location и выбрать одно Местоположение как end_location .

У меня есть Действия Модель / Таблица с start_location и end_location .

Кроме того, у меня есть Местоположение Модель / Таблица.

Activities - Table
---------------------------------------------------
   id   |   start_location_id   |  end_location_id
---------------------------------------------------       
   1    |   1                   |  1
   2    |   1                   |  2


Location - Table
---------------------------------------------------
   id   |   city
---------------------------------------------------
   1    |   Berlin
   2    |   Paris

Проблема

Как я могу настроить здесь «множественные» отношения «один ко многим»?

Моя проблема в том, что я не знаю, как сопоставить местоположение с действиями.start_location_id AND activity.end_location_id.

Особенно, как выбрать два местоположения в Laravels Nova.

Возможное решение?

Activities.php (модель)

public function start_location() {
    return $this->hasOne(Location::class);
}

public function end_location() {
    return $this->hasOne(Location::class);
}

Location.php (модель)

public function start_location() {
    return $this->hasMany(Activities::class, start_location_id);
}

public function end_location() {
    return $this->hasMany(Activities::class, end_location_id);
}

Location.php - ресурс Nova

public function fields(Request $request)
{
    return [
        ID::make()->sortable(),
        Text::make('City'),
        BelongsToMany::make('Activities', 'location_start'), // ?
        BelongsToMany::make('Activities', 'location_end')    // ?
    ];
}

Activities.php - ресурс Nova

public function fields(Request $request)
{
    return [
        ID::make()->sortable(),
        Text::make('Title'),
        Trix::make('Body'),
        HasOne::make('Location', 'location_start'), // ?
        HasOne::make('Location', 'location_end'),   // ?
    ];
}

Возможноесть более простой подход?

Заранее спасибо!

...