Laravel Nova 不使用数组键作为过滤器中的选项值

问题描述 投票:0回答:1

我为 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,正如我从选项列表返回的数组中所期望的那样。

这里出了什么问题?

laravel laravel-nova
1个回答
0
投票
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();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.