使用laravel livewire中的选择下拉菜单进行过滤

8fq7wneg  于 2022-11-26  发布在  其他
关注(0)|答案(1)|浏览(160)

我在视图页面中有一个选择下拉列表,我在livewire组件中使用了该功能。过滤器工作正常,但问题是当我使用下拉列表过滤作业时,它过滤了数据,但没有显示下拉列表中的其他输入。我必须返回选择另一个输入进行过滤。请有人帮助我。
下面是我在livewire组件中的函数

class Index extends Component
{
    public $jobs, $jobInput = [];

    protected $queryString = ['jobInput'];

    public function render()
    {
        $this->jobs = CreateJob::where('status', '1')->when($this->jobInput, function ($query) {
            $query->where('job_title', $this->jobInput);
        })->get();
        return view('livewire.frontend.job.index', ['jobs' => $this->jobs]);
    }
}

这是我的浏览页面

<div class="card-body">
    @if ($jobs)
        <label class="d-block">
            <select class="form-control" name="jobInput" wire:model="jobInput"    id="jobInput">
                <option value="">--Select--</option>
                @foreach ($jobs as $job)
                    <<option value="{{ $job->job_title }}">{{ $job->job_title }}</option>
                @endforeach
            </select>
        </label>   
    @endif
</div>

以下是我的输出
第一次
看到下拉菜单只显示选定的结果。我想显示像在第一个图像,甚至过滤后。
提前感谢!

kgsdhlau

kgsdhlau1#

您应该删除此块:

->when($this->jobInput, function ($query) {
        $query->where('job_title', $this->jobInput);
})

因为只要$this->jobInput存在,when中的where查询就会起作用。
如果你想在下拉菜单中选择它,你必须在视图中的@foreach循环中完成。

相关问题