Livewire 数据表 - 转换列和过滤器

Livewire Datatables - Transform column and filter

我正在尝试通过回调替换列数据,它必须 return 一个用户名,映射到用户唯一标识符。用户名列表在模型数据之外,这就是我被困的地方。 我不能将 filterable() 与用户名列表一起使用,因为它将不正确,因为 Eloquent 将无法按用户名进行过滤 - 只能按用户标识符进行过滤。

以下代码的最终结果是执行 'WHERE users.id = The username for X' 而不是 'WHERE users.id = X' 的查询。

我的模型:

<?php

class User extends Model 
{
    protected $table = 'users';
    protected $fillable = ['id'];

    public static function getNamesProperty()
    {
         return ['Username #1', 'Username #2'];
    }
}


class LogsTable extends LivewireDatatable
{
    public $model      = User::class;
    public $exportable = true;
    public $hideable   = 'select';

    public function builder()
    {
        return User::query();
    }

    public function columns()
    {
        return [
        Column::callback(['id'], function ($id) {
            return "The username for " . $id;
        })->label('Username')->filterOn('users.id')->filterable(User::names()),
         ];
    }

问题是我如何实现目标 - 能够过滤,同时显示用户名而不是标识符?

GitHub 上有一个答案:https://github.com/MedicOneSystems/livewire-datatables/issues/284

谢谢马克!