社区,
我想从Nova的一张 table 中选择两个 . 应该可以在Laravel Nova中选择一个位置作为start_location,并选择一个位置作为end_location .
我有 Activities 模型/表格 start_location 和 end_location .
此外,我有一个 Location 模型/表 .
Activities - Table
---------------------------------------------------
id | start_location_id | end_location_id
---------------------------------------------------
1 | 1 | 1
2 | 1 | 2
Location - Table
---------------------------------------------------
id | city
---------------------------------------------------
1 | Berlin
2 | Paris
问题
如何在此处设置“多个”一对多关系?
我的挑战是我不确定如何将位置映射到activities.start_location_id AND activities.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'), // ?
];
}
也许有更简单的方法?
先感谢您!