我为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();
}
}
如果在options()
中返回的数组I为dd()
,则如下所示:
[
1 => 'Foo',
2 => 'Bar',
3 => 'Baz',
]
但是,如果我判断Nova中的元素,我会看到以下SELECT选项:
<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>
如果Idd()
是apply()
中的$value
,我会看到该值实际上是帐户名,而不是我期望从选项列表返回的数组中返回的ID.
我决定手动返回上面粘贴的内容作为输出……
这里出了什么问题?