如何在Rappasoft Laravel Livewire Datatables V2中展示当前用户产品数据
在Rappasoft Laravel Livewire Datatables V2中实现用户专属产品数据展示
实现步骤
直接将提供的query()方法与你现有的columns()方法整合到同一个Livewire数据表组件类中即可,具体实现如下:
- 导入必要的依赖类
在组件文件顶部添加以下导入语句:
use Illuminate\Database\Eloquent\Builder; use App\Models\Product; use Rappasoft\LaravelLivewireTables\Views\Column; use Rappasoft\LaravelLivewireTables\DataTableComponent;
- 完整的组件代码示例
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
相关产品推荐
相关产品推荐

