Проблема с отображением дополнительного поля сводной таблицы в Larvel Nova

Я использую Laravel Nova в качестве администратора. У меня проблема из-за того, что в сводной таблице я добавил дополнительное поле. У меня есть таблица пользователей и таблица событий. У пользователя может быть много событий, а у события может быть много пользователей. Итак, я создал сводную таблицу для двух моделей. Но я хочу статус события пользователя. Поэтому я добавил дополнительное поле для статуса в сводную таблицу.

Моя проблема сейчас в Laravel Nova. В моем ресурсе событий у меня есть следующее:

BelongsToMany::make('Pending Users', 'pendingUsers', 'App\Nova\User'),

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

Какая стратегия лучше всего подходит в моем случае? Думаю сделать модель для события и пользователя.

Я не знаю, как показать дополнительное поле сводной таблицы в BelongsToMany в Laravel Nova. Он просто показывает, что я добавил в пользовательский ресурс Nova. Как ID и имя. Но я не знаю, где будет отображаться статус события пользователя. Я хочу показать это в таблице событий BelongsToMany пользователям.


person LordGrim    schedule 06.12.2018    source источник


Ответы (2)


Вам нужно убедиться, что вы определяете отношения в ОБЕИХ моделях, а затем сообщаете Nova, какие поля вы хотите отобразить следующим образом:

На вашем ресурсе событий:

BelongsToMany::make('Users')
->fields(function() {
    return [
        Text::make('status')
    ];
}),

В вашей модели событий:

public function users()
{
  return $this->belongsToMany(User::class)->withPivot('status');
}

В вашей пользовательской модели:

public function events()
{
  return $this->belongsToMany(Event::class)->withPivot('status');
}
person pjhile    schedule 06.12.2018
comment
Спасибо, сэр. Есть ли способ показать файл для индексации, чтобы пользователь мог его загрузить и не нужно было добавлять действие для загрузки. - person LordGrim; 07.12.2018

Я добился этого, определив ->withPivot('filed name)' отношения, которые долгое время сводили меня с ума.

BelongsToMany::make('your_relationship')
    ->fields(function () {
        return [
            Text::make('your_text'),
        ];
    })

Ваши отношения будут здесь примерно такими, как я сказал ранее

public function users()
{
  return $this->belongsToMany(User::class)->withPivot('filed name');
}
person Ismoil Shifoev    schedule 06.12.2018
comment
Вы можете привести мне пример? У меня уже есть это: return $ this- ›ownToMany (User :: class) -› withPivot ('proof_of_payment'); Но таблица ожидающих пользователей в моем мероприятии по-прежнему показывает только полное имя пользователя. - person LordGrim; 06.12.2018
comment
BelongsToMany :: make ('Ожидающие пользователи', 'ожидающиеПользователи', 'Приложение \ Nova \ Пользователи'), - person LordGrim; 06.12.2018
comment
Теперь я могу получить данные дополнительного столбца в сводной таблице. Но он будет отображаться только после того, как я нажму на редактирование файла ownToMany. Например, у меня есть столбец в сводной таблице для proof_of_payment - он просто будет отображаться, если я нажму на редактирование. Это не загружается. - person LordGrim; 06.12.2018
comment
Извините, что не вовремя отвечаю)) Вижу, просто работает. Он работал с добавлением поворота в вашу модель. Надеюсь, моя помощь была для вас полезной !! - person Ismoil Shifoev; 07.12.2018