我正在使用Laravel开发Web应用程序 . 我正在使用Laravel Nova来构建管理面板 . 但是我对BelongsToMany字段存在问题 . 请看下面我的场景 .
我有数据库架构如下
Area
Station - has area_id because an area has many stations
manager - area_id because each user belongs to an area
Area_station - station_id and manager_id (many to many)
所以在Station nova资源中,我添加了一个这样的字段 .
BelongsToMany::make('Managers', 'managers', Manager::class),
因此,当我从Nova管理面板进入Station详细信息页面并选择“Attach manager”时,在下一页的下拉列表中(将管理器附加到部门的页面),我可以看到数据库中所有可用的管理器 . 但是,我不是在下拉列表中显示所有可用的管理器,而是希望过滤属于与所选站点相同区域的管理器/用户 . 我的意思是当我将经理连接到车站时,我必须选择一个车站 . 是否有可能过滤或实现我想要的Nova?如何?
1 回答
在
Manager
nova资源下覆盖relatableQuery
函数,该函数将确定哪些模型实例可以附加到其他资源 .Approach 1
Update
Approach 2 - 刚刚学到了一些新东西 .
您可以在
Station
Nova资源下为关系添加可关联的查询 . 在这种情况下,无需检查资源 .在我看来,方法2更好 .