如何在FilamentPHP自定义资源的getTableQuery中获取记录ID以动态展示表格数据
在FilamentPHP自定义资源的getTableQuery中获取记录ID的方法
从请求中提取URL参数里的容器ID
你可以通过Filament内置的request()助手直接获取URL中的record参数——这个参数就是你在EditAction里传入的Container模型实例对应的ID(Filament会自动将模型实例转换为ID作为路由参数)。代码示例:
$containerId = request()->route('record');将ID应用到查询条件中
拿到容器ID后,直接把它加入到你的关联查询的where子句即可。建议增加判断逻辑,确保只有当ID存在时才添加过滤条件,避免无效查询:完整的
getTableQuery方法实现:public static function getTableQuery(): Builder { $query = Order::join('containers', 'orders.container_id', '=', 'containers.container_id'); // 获取并使用URL中的容器ID过滤订单 if ($containerId = request()->route('record')) { $query->where('orders.container_id', $containerId); } return $query; }补充说明
你在EditAction中通过ContainerResource::getUrl('listOrders', ['record' => $record])生成的链接,Filament会自动将$record(Container模型实例)解析为对应的ID填充到路由参数里,因此request()->route('record')可以准确获取到目标容器的ID,从而实现“编辑容器时仅展示该容器关联的订单”的需求。
内容的提问来源于stack exchange,提问作者Marcellin Khoury
相关产品推荐
相关产品推荐

