使用 Laravel 背包中的列过滤 table
Filter table with a column in Laravel Backpack
我有一个员工 table 显示如下:
+-------------------------------+
| id | name | code |
---------------------------------
| 1 | Employee 1 | A1 |
| 2 | Employee 2 | A2 |
| ... | ... | ... |
+-------------------------------+
我想在此 table 中按代码列创建过滤器。我的查询将是这样的:
SELECT name FROM employee WHERE code LIKE .% $filter %.
我在背包文档中搜索并尝试这样做
$this->crud->addFilter(
[
'type' => 'select2',
'name' => 'code',
'label' => 'Filter',
],
function () {
return Employee::select('code')->distinct()->get()->toArray();
},
function ($value) {
$this->crud->addClause('where', 'code', $value);
}
);
但出现错误:htmlspecialchars() expects parameter 1 to be string, array given
。我该如何解决这个问题?
非常感谢!
您生成员工代码列表的代码目前返回一个这样的数组,而包需要一个字符串数组。
[
['code' => 'A1'],
['code' => 'A2'],
];
要解决此问题,您需要 pluck
数组中的 code
列,并用代码键入它:
$this->crud->addFilter([
'type' => 'select2',
'name' => 'code',
'label' => 'Filter',
],
function() {
return Employee::select('code')->distinct()->get()->pluck('code', 'code')->toArray();
},
function($value) {
$this->crud->addClause('where', 'code', $value);
});
这将导致如下结果:
[
'A1' => 'A1',
'A2' => 'A2',
];
我有一个员工 table 显示如下:
+-------------------------------+
| id | name | code |
---------------------------------
| 1 | Employee 1 | A1 |
| 2 | Employee 2 | A2 |
| ... | ... | ... |
+-------------------------------+
我想在此 table 中按代码列创建过滤器。我的查询将是这样的:
SELECT name FROM employee WHERE code LIKE .% $filter %.
我在背包文档中搜索并尝试这样做
$this->crud->addFilter(
[
'type' => 'select2',
'name' => 'code',
'label' => 'Filter',
],
function () {
return Employee::select('code')->distinct()->get()->toArray();
},
function ($value) {
$this->crud->addClause('where', 'code', $value);
}
);
但出现错误:htmlspecialchars() expects parameter 1 to be string, array given
。我该如何解决这个问题?
非常感谢!
您生成员工代码列表的代码目前返回一个这样的数组,而包需要一个字符串数组。
[
['code' => 'A1'],
['code' => 'A2'],
];
要解决此问题,您需要 pluck
数组中的 code
列,并用代码键入它:
$this->crud->addFilter([
'type' => 'select2',
'name' => 'code',
'label' => 'Filter',
],
function() {
return Employee::select('code')->distinct()->get()->pluck('code', 'code')->toArray();
},
function($value) {
$this->crud->addClause('where', 'code', $value);
});
这将导致如下结果:
[
'A1' => 'A1',
'A2' => 'A2',
];