Laravel 拉雷维尔新星-二号“;“一对多关系”;
社区 我想从Nova的一个表中选择两个。 应该可以选择一个位于拉拉维尔新星的位置作为起始位置,选择一个位置作为结束位置 我有一个活动模型/表格,带有开始位置和结束位置 此外,我还有一个位置模型/表格Laravel 拉雷维尔新星-二号“;“一对多关系”;,laravel,laravel-5,eloquent,one-to-many,laravel-nova,Laravel,Laravel 5,Eloquent,One To Many,Laravel Nova,社区 我想从Nova的一个表中选择两个。 应该可以选择一个位于拉拉维尔新星的位置作为起始位置,选择一个位置作为结束位置 我有一个活动模型/表格,带有开始位置和结束位置 此外,我还有一个位置模型/表格 Activities - Table --------------------------------------------------- id | start_location_id | end_location_id ----------------------------
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\u location\u id和activities.end\u location\u id
特别是,如何选择两个地点在拉雷夫斯新星
可能的解决方案?
Activities.php(模型)
Location.php(模型)
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') // ?
];
}
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'), // ?
];
}
Activities.php-Nova资源
public function fields(Request $request)
{
return [
ID::make()->sortable(),
Text::make('City'),
BelongsToMany::make('Activities', 'location_start'), // ?
BelongsToMany::make('Activities', 'location_end') // ?
];
}
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'), // ?
];
}
也许有更简单的方法
提前谢谢你 你尝试过你可能的解决方案吗?我的意见是,把它当作一般的一对多关系。在您可能的解决方案中,不要使用
hasOne
而使用belongsTo
。另外,在nova资源更新中,location\u start
到start\u location
您的关系职能名称。同样适用于location\u end
,因为我的第一种方法没有按预期工作,所以我找到了不同的解决方案。在Nova中,可以使用选项类型选择选择字段。选择::make('Start Location','Start_Location_id')->需要在Activitiy模型中定义的选项(\App\Location::getId()):公共静态函数getId(){return self::all('id');//这将首先返回id对象{'id':1}。现在,我只需要将选项字段映射到位置标题。仍然在想怎么做。。