Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 拉雷维尔新星-二号“;“一对多关系”;_Laravel_Laravel 5_Eloquent_One To Many_Laravel Nova - Fatal编程技术网

Laravel 拉雷维尔新星-二号“;“一对多关系”;

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 ----------------------------

社区

我想从Nova的一个表中选择两个。 应该可以选择一个位于拉拉维尔新星的位置作为起始位置,选择一个位置作为结束位置

我有一个活动模型/表格,带有开始位置结束位置

此外,我还有一个位置模型/表格

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}。现在,我只需要将选项字段映射到位置标题。仍然在想怎么做。。