首页 > 解决方案 > 在php laravel中将两个数组合并为单个数组并在刀片中显示

问题描述

我想根据高校过滤数据,我的查询是

$exams = Exam::where('status', 1);
        if ($request->filled('universities')) {
            $exams = $exams->whereIn('university_id', $request->universities);  //data 1st
        }
        if ($request->filled('colleges')) {
            $exams = $exams->whereIn('college_id', $request->colleges); //data 2nd
        }
        $exams = $exams->get();

我的表格是

<form action="">
<ul class="list-group list-group-flush">
    @foreach($universities as $university)
        <li class="list-group-item">
            <a href="#">
                <label>
                    <input name='universities[]' onchange="searchExam();"
                           class="mr-2" type="checkbox"
                           value='{{$university->id}}'/>
                    {{$university->name}}
                </label>
            </a>
        </li>
    @endforeach
</ul>
<ul class="list-group list-group-flush">
    @foreach($colleges as $college)
        <li class="list-group-item">
            <a href="#">
                <label>
                    <input onchange="searchExam();" name='colleges[]'
                           class="mr-2" type="checkbox"
                           value='{{$college->id}}'/>
                    {{$college->name}}
                </label>
            </a>
        </li>
    @endforeach
</ul>
</form>

我的问题是我只获取大学或学院的数据,但我想要的是如果检查了学院和大学选项,我想获取学院和大学的数据。如何将这两个数据合并到一个数组中?

标签: phplaravel

解决方案


您可能希望对学院或大学的地址进行分组。你可以尝试这样的事情:

$exams = Exam::where('status', 1);

if ($request->has('universities', 'colleges')) {
    $exams->where(function ($q) use ($request) {
        if ($request->input('universities')) {
            $q->orWhereIn('university_id', (array) $request->input('universities'));
        }

        if ($request->input('colleges')) {
            $q->orWhereIn('college_id', (array) $request->input('colleges'));
        }
    });
}

推荐阅读