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

如何在Rappasoft Laravel Livewire Datatables V2中展示当前用户产品数据

在Rappasoft Laravel Livewire Datatables V2中实现用户专属产品数据展示

实现步骤

直接将提供的query()方法与你现有的columns()方法整合到同一个Livewire数据表组件类中即可,具体实现如下:

  1. 导入必要的依赖类
    在组件文件顶部添加以下导入语句:
use Illuminate\Database\Eloquent\Builder;
use App\Models\Product;
use Rappasoft\LaravelLivewireTables\Views\Column;
use Rappasoft\LaravelLivewireTables\DataTableComponent;
  1. 完整的组件代码示例
class UserProductsTable extends DataTableComponent
{
    public function query(): Builder
    {
        // 获取当前登录用户ID,过滤出该用户的产品
        $userId = auth()->user()->id;
        return Product::query()->where('user_id', $userId);
    }

    public function columns(): array
    {
        return [
            Column::make("Nama", "name")
                ->sortable()
                ->searchable(),
            Column::make("Deskripsi", "description")
                ->sortable()
                ->searchable(),
            Column::make("Stok", "stock")
                ->sortable()
                ->format(
                    fn($value, $row, Column $column) => $row->stock === 9999 
                        ? '<span class="badge bg-label-success">INSTOCK</span>' 
                        : number_format($row->stock, 0, ',', '.')
                )->html(),
        ];
    }
}

关键说明

  • query()方法:负责构建数据查询逻辑,通过当前登录用户的ID过滤products表,确保仅加载与当前用户匹配的产品数据。
  • columns()方法:保持你原有的列配置,负责定义数据表的显示列、排序、搜索规则以及库存状态的格式化逻辑。

可选优化(未登录处理)

如果需要处理用户未登录的场景,可以在query()方法中添加判断,避免报错:

public function query(): Builder
{
    if (!auth()->check()) {
        // 未登录时返回空数据集
        return Product::query()->where('id', 0);
    }

    $userId = auth()->user()->id;
    return Product::query()->where('user_id', $userId);
}

内容的提问来源于stack exchange,提问作者gapindang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:55:15