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