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
谢谢马克!
我正在尝试通过回调替换列数据,它必须 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
谢谢马克!