Laravel Nova 显示多对多与枢轴
Laravel Nova show Many-to-Many with pivot
我有两张桌子show_types和场地。对于多对多关系,我确实创建了一个新的枢轴,如下所示
public function up()
{
Schema::create('show_types_venues', function (Blueprint $table) {
$table->integer('show_types_id')->unsigned();
$table->foreign('show_types_id')->references('id')->on('show_types');
$table->integer('venue_id')->unsigned();
$table->foreign('venue_id')->references('id')->on('venues');
});
}
并添加到模型中
ShowType.php
public function venues()
{
return $this->belongsToMany(Venue::class, 'show_types_venues', 'show_types_id', 'venue_id');
}
Venue.php
public function shows()
{
return $this->belongsToMany(ShowType::class, 'show_types_venues', 'venue_id', 'show_types_id');
}
我正在尝试使用
让这种关系出现在 Nova 上
ShowType.php
public function fields(Request $request)
{
return [
ID::make()->sortable(),
Text::make('Name'),
BelongsToMany::make('Venues', 'venues', Venue::class)
];
但是我的界面上没有任何显示。我怎样才能使它显示 select 多个我可以 add/edit 与此 showType 关联的场地?
我需要创建更多“手动”的东西吗?谢谢
由于没有 Nova 的文档,我使用 Bejacho's Belongs to Many Fields 做了一个解决方法,我们可以在其中轻松添加在 Nova 上显示为多重选择器的多对多关系。
与我上面提到的设置相同,我唯一做的就是按照他们的例子:
use Benjacho\BelongsToManyField\BelongsToManyField;
public function fields(Request $request){
return [
..., //If you are using with BelongsToMany native Field, put this field after
BelongsToManyField::make('Role Label', 'roles', 'App\Nova\Role'),
];
}
并且完美地满足了我的需求!
我有两张桌子show_types和场地。对于多对多关系,我确实创建了一个新的枢轴,如下所示
public function up()
{
Schema::create('show_types_venues', function (Blueprint $table) {
$table->integer('show_types_id')->unsigned();
$table->foreign('show_types_id')->references('id')->on('show_types');
$table->integer('venue_id')->unsigned();
$table->foreign('venue_id')->references('id')->on('venues');
});
}
并添加到模型中
ShowType.php
public function venues()
{
return $this->belongsToMany(Venue::class, 'show_types_venues', 'show_types_id', 'venue_id');
}
Venue.php
public function shows()
{
return $this->belongsToMany(ShowType::class, 'show_types_venues', 'venue_id', 'show_types_id');
}
我正在尝试使用
让这种关系出现在 Nova 上ShowType.php
public function fields(Request $request)
{
return [
ID::make()->sortable(),
Text::make('Name'),
BelongsToMany::make('Venues', 'venues', Venue::class)
];
但是我的界面上没有任何显示。我怎样才能使它显示 select 多个我可以 add/edit 与此 showType 关联的场地? 我需要创建更多“手动”的东西吗?谢谢
由于没有 Nova 的文档,我使用 Bejacho's Belongs to Many Fields 做了一个解决方法,我们可以在其中轻松添加在 Nova 上显示为多重选择器的多对多关系。 与我上面提到的设置相同,我唯一做的就是按照他们的例子:
use Benjacho\BelongsToManyField\BelongsToManyField;
public function fields(Request $request){
return [
..., //If you are using with BelongsToMany native Field, put this field after
BelongsToManyField::make('Role Label', 'roles', 'App\Nova\Role'),
];
}
并且完美地满足了我的需求!