Laravel FilamentPHP 10:如何按当前用户自动过滤资源表格
在Laravel FilamentPHP 10中自动过滤当前用户的销售记录
要实现当前用户仅查看自己录入的销售记录,只需在SaleResource类中重写getEloquentQuery方法,通过添加user_id的过滤条件即可,具体步骤如下:
- 打开你的
SaleResource.php文件(通常位于app/Filament/Resources目录下) - 找到并添加
getEloquentQuery方法,代码示例:
use Filament\Resources\Resource; use Illuminate\Database\Eloquent\Builder; class SaleResource extends Resource { // 保留你已有的资源配置(比如模型、导航、表单等代码) public static function getEloquentQuery(): Builder { // 基于父类的基础查询,追加当前用户ID的过滤条件 return parent::getEloquentQuery()->where('user_id', auth()->id()); } // 其他已有的资源方法... }
扩展:支持管理员查看所有记录
如果需要让管理员角色能查看全部销售记录,可以在方法中增加权限判断:
public static function getEloquentQuery(): Builder { $query = parent::getEloquentQuery(); // 假设你的User模型有is_admin字段来标记管理员 if (!auth()->user()->is_admin) { $query->where('user_id', auth()->id()); } return $query; }
注意事项
- 确保你的路由处于Laravel认证中间件保护下,Filament资源默认已经集成了认证,所以无需额外配置;
- 确认
auth()->id()能正常获取当前登录用户的ID,这依赖于用户已成功登录。
内容的提问来源于stack exchange,提问作者cristian ruelas
相关产品推荐
相关产品推荐

