在Larvel Nova中显示数据透视表的其他字段时出现问题

时间:2018-12-06 13:15:20

标签: laravel laravel-nova

我正在使用Laravel Nova作为我的管理员。 我有一个问题,我在数据透视表中添加了其他字段。 我有用户表和事件表。用户可以有多个事件,而事件可以有多个用户。因此,我为这两个模型创建了一个数据透视表。但是我要用户事件的状态。因此,我在数据透视表中添加了状态附加字段。

我现在的问题是Laravel Nova。 在我的活动资源中,我有这个:

SELECT JSON_VALUE(a.data, '$.*.rid10')
FROM JSON_DOCUMENTS a;

它显示了待处理客户端的另一个表。我已经可以获取特定事件中的用户列表,但无法在表中显示用户事件的状态。如果用户已批准或仍在等待中。

哪种方法最适合我?我正在考虑为事件和用户建立模型。

我不知道如何在Laravel Nova的BelongsToMany中显示数据透视表的其他字段。它仅显示了我在Nova用户资源中添加的内容。像ID和名称一样。但是我不知道用户事件的状态将显示在哪里。我想在向用户显示的BelongsToMany事件表中显示它。

2 个答案:

答案 0 :(得分:1)

您需要确保在两个模型中都定义了关系,然后让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');
}

答案 1 :(得分:0)

我通过定义->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');
}