Php 为什么不是';我哪里没有只发送对应关系?

Php 为什么不是';我哪里没有只发送对应关系?,php,laravel,eloquent,Php,Laravel,Eloquent,我有一个搜索页面,其中有许多下拉选择形式的字段。我有职位、工作领域、工作类型等 每个select都能正常工作。但是,如果我为工作字段(1)选择第一个选项,它不会返回正确的结果。它只是把我所有的东西都送回去 对于其他查询,它们如下所示: select * from `candidates` where exists ( select * from `interests` inner join `candidate_interest`

我有一个搜索页面,其中有许多下拉选择形式的字段。我有职位、工作领域、工作类型等

每个select都能正常工作。但是,如果我为工作字段(1)选择第一个选项,它不会返回正确的结果。它只是把我所有的东西都送回去

对于其他查询,它们如下所示:

select
  *
from
  `candidates`
where
  exists (
    select
      *
    from
      `interests`
      inner join `candidate_interest` on `interests`.`id` = `candidate_interest`.`interest_id`
    where
      `candidates`.`id` = `candidate_interest`.`candidate_id`
      and `interests`.`id` = '2'
  )
对于工作领域(非工作领域):

这是我的密码:

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $candidates = Candidate::query();
        $data = [];
        $data['availabilities'] = Availability::all();
        $data['job_types'] = JobType::all();
        $data['fields_of_work'] = FieldOfWork::all();
        $data['interests'] = Interest::all();
        $data['salary'] = Salary::all();
        $data['trainings'] = Training::all();
        $data['statuses'] = \App\Status::all();
        if($request->availabilities && $request->availabilities != -1) {
            $candidates->whereHas('availabilities', function ($query) use ($request) {
                $query->whereIn('availabilities.id', [$request->availabilities, 6]);
            });
        }
        if($request->job_types && $request->job_types != -1) {
            $candidates->whereHas('job_types', function ($query) use ($request) {
                $query->where('job_types.id', $request->job_types);
            });
        }
        if($request->fields_of_works && $request->fields_of_works != -1) {
            $candidates->whereHas('fields_of_work', function ($query) use ($request) {
                $query->where('field_of_works.id', $request->fields_of_works);
            });
        }
        if($request->interests && $request->interests != -1) {
            $candidates->whereHas('interests', function ($query) use ($request) {
                $query->where('interests.id', $request->interests);
            });
        }
        if($request->salary && $request->salary > 0) {
            $candidates->where(function ($query) use ($request) {
                $query->where('salary_id', $request->salary)->orWhereNull('salary_id');
            });
        }
        if($request->trainings && $request->trainings != -1) {
            $candidates->whereHas('trainings', function ($query) use ($request) {
                $query->where('trainings.id', $request->trainings);
            });
        }
        if($request->status && $request->status != -1) {
            $candidates->where('status_id', $request->status);
        }

        if($request->excel == true) {
            $exports = new \App\Exports\CandidatesExport($candidates);
            return $exports->download('candidats_' . mt_rand(0, 10000) . '.xlsx', \Maatwebsite\Excel\Excel::XLSX, [
                'Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=utf-8'
            ]);
        }

        return view('admin.candidates.index')->with('candidates', $candidates->get())->with('data', $data)->with('request', $request);
    }

我不明白为什么它不起作用,它应该起作用,因为所有其他类似的关系都起作用。。。有人有主意吗

工作领域的HTML:

<div class="form-group row">
    <label for="fields_of_work" class="col-sm-2 col-form-label">Domaines de travail</label>
    <div class="col-sm-10">
        <select name="fields_of_work" class="custom-select" id="inputGroupSelect04">
            <option value="-1">
                Aucun
            </option>
            :

            <option value="1">
                            Marketing
                        </option>
            :

            <option value="2">
                            Ventes
                        </option>
            :

            <option value="3">
                            Service clientèle
                        </option>
            :

            <option value="4">
                            Gestion
                        </option>
            :

            <option value="5">
                            Informatique
                        </option>
            :

            <option value="6">
                            Santé
                        </option>
            :

            <option value="7">
                            Sécurité
                        </option>
            :

            <option value="8">
                            Entrepôt
                        </option>
            :

            <option value="9">
                            Industrie Alimentation
                        </option>
            :

            <option value="10">
                            Industrie Minière
                        </option>
            :

            <option value="11">
                            Industrie Textile
                        </option>
            :

            <option value="12">
                            Transport
                        </option>
            :

            <option value="13">
                            Logistique
                        </option>
            :

            <option value="14">
                            Construction
                        </option>
            :

            <option value="15">
                             Pharmaceutique
                        </option>
            :

            <option value="16">
                            Télécommunications
                        </option>
            :

            <option value="17">
                            Génie
                        </option>
            :

            <option value="18">
                            Transformation recyclage
                        </option>
                    </select>
    </div>
</div>

劳动领域
奥村
:
营销
:
发泄
:
服务客户
:
手势
:
信息学
:
圣埃
:
居里夫人
:
入口
:
工业食品
:
迷你工业
:
工业纺织
:
运输
:
物流学
:
建设
:
药剂学
:
Télé通信
:
盖尼
:
转化回收

开始时,
$request->fields\u或_works
看起来像一个数组,所以你应该做一个
->其中
(这适用于你的其余约束条件)而不是
$query->where(..)
。让我感兴趣的是为什么不抛出异常。发布的代码是否与您实际执行的代码完全一致?顺便说一句,如果案例中我发布的内容正是我正在执行的内容,那么您可以将其包装起来。不,$request->fields\u of\u works是一个字符串,(它是一个单选,而不是多个)。您能在表单中显示
字段的html吗?@WesleySmith刚刚添加了它。您确定表单中只有一个字段(即此选择)包含
name=“fields\u of\u works”
?如果有2个,而第二个为空,则可能会导致此问题。在控制器中,您可以执行
var\u dump($request->input())
并向我们显示该值。它似乎根本没有添加子句,所以我怀疑,
$request->fields\u of\u works
没有设置,或者由于某种原因是一个意外值。
    public function fields_of_work() {
        return $this->belongsToMany('App\FieldOfWork');
    }
    public function candidates() {
        return $this->belongsToMany('\App\Candidate');
    }
<div class="form-group row">
    <label for="fields_of_work" class="col-sm-2 col-form-label">Domaines de travail</label>
    <div class="col-sm-10">
        <select name="fields_of_work" class="custom-select" id="inputGroupSelect04">
            <option value="-1">
                Aucun
            </option>
            :

            <option value="1">
                            Marketing
                        </option>
            :

            <option value="2">
                            Ventes
                        </option>
            :

            <option value="3">
                            Service clientèle
                        </option>
            :

            <option value="4">
                            Gestion
                        </option>
            :

            <option value="5">
                            Informatique
                        </option>
            :

            <option value="6">
                            Santé
                        </option>
            :

            <option value="7">
                            Sécurité
                        </option>
            :

            <option value="8">
                            Entrepôt
                        </option>
            :

            <option value="9">
                            Industrie Alimentation
                        </option>
            :

            <option value="10">
                            Industrie Minière
                        </option>
            :

            <option value="11">
                            Industrie Textile
                        </option>
            :

            <option value="12">
                            Transport
                        </option>
            :

            <option value="13">
                            Logistique
                        </option>
            :

            <option value="14">
                            Construction
                        </option>
            :

            <option value="15">
                             Pharmaceutique
                        </option>
            :

            <option value="16">
                            Télécommunications
                        </option>
            :

            <option value="17">
                            Génie
                        </option>
            :

            <option value="18">
                            Transformation recyclage
                        </option>
                    </select>
    </div>
</div>