我为 Nova v4.32.11 创建了这个过滤器:
class AccountFilter extends Filter
{
public function apply(Request $request, $query, $value)
{
return $query->where('account_id', $value);
}
public function options(Request $request)
{
return Account::all()
->sortBy('name')
->mapWithKeys(function ($account) {
return [$account->id => $account->name];
})
->toArray();
}
}
如果我
dd()
在options()
中返回数组,它看起来像这样:
[
1 => 'Foo',
2 => 'Bar',
3 => 'Baz',
]
但是,如果我检查 Nova 中的元素,我会看到选择选项:
<select dusk="Account Filter-select-filter" class="w-full block form-control form-select form-control-sm form-select-bordered">
<option value="">—</option>
<option value="Foo">Foo</option>
<option value="Bar">Bar</option>
<option value="Baz">Baz</option>
</select>
如果我
dd()
$value
中的apply()
我看到该值确实是帐户名称而不是ID,正如我从选项列表返回的数组中所期望的那样。
这里出了什么问题?
class AccountFilter extends Filter
{
public function apply(Request $request, $query, $value)
{
return $query->where('name', $value);
}
public function options(Request $request)
{
return Account::all()
->sortBy('name')
->mapWithKeys(function ($account) {
return [$account->name => $account->name];
})
->toArray();
}
}