You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel FilamentPHP 10:如何按当前用户自动过滤资源表格

在Laravel FilamentPHP 10中自动过滤当前用户的销售记录

要实现当前用户仅查看自己录入的销售记录,只需在SaleResource类中重写getEloquentQuery方法,通过添加user_id的过滤条件即可,具体步骤如下:

  1. 打开你的SaleResource.php文件(通常位于app/Filament/Resources目录下)
  2. 找到并添加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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 16:42:02