#laravel
#laravel
Вопрос:
У меня есть функции поиска, которые имеют несколько полей ввода, и всякий раз, когда одно из входных данных равно нулю, оно возвращает ошибки.
Я пробовал этот код, но он просто возвращает оператор запроса, а не сам результат
$employees = DB::table('job_requests')
->select('job_requests.*','user_infos.*')
->leftJoin('user_infos','user_infos.user_id','=','job_requests.user_id')
->where('user_infos.role','=','0');
if ($job_name) {
$employees->where('job_requests.job_name','like',"%$job_name%");
}
if ($location) {
$employees->where('job_requests.location','=',$location);
}
if ($gender) {
$employees->where('user_infos.gender','=',$gender);
}
if ($salary) {
$employees->where('job_requests.salary','<=',$salary);
}
if ($start_date amp;amp; $end_date) {
$employees->whereBetween('end_date',array($start_date,$end_date));
}
$employees->get();
Я ожидаю, что результат будет результатом запроса
Комментарии:
1. пожалуйста, покажите весь код функции
2. Это весь код
3. является ли $job_name и остальные переменные из запроса?
4. Можете ли вы показать нам, какие ошибки вы видите?
Ответ №1:
Я думаю, вам следует использовать этот код
$employees = DB::table('job_requests')
->select('job_requests.*','user_infos.*')
->leftJoin('user_infos','user_infos.user_id','=','job_requests.user_id')
->where('user_infos.role','=','0');
if (isset($job_name) amp;amp; !empty($job_name)) {
$employees->andWhere('job_requests.job_name','like',"%$job_name%");
}
if (isset($location) amp;amp; !empty($location)) {
$employees->andWhere('job_requests.location','=',$location);
}
if (isset($gender) amp;amp; !empty($gender)) {
$employees->andWhere('user_infos.gender','=',$gender);
}
if (isset($salary) amp;amp; !empty($salary)) {
$employees->andWhere('job_requests.salary','<=',$salary);
}
if (isset($start_date) amp;amp; !empty($start_date) amp;amp; isset($end_date) amp;amp; !empty($end_date)) {
$employees->whereBetween('end_date',array($start_date,$end_date));
}
$employees->get();
Надеюсь, это решит вашу проблему.
Ответ №2:
$employees = DB::table('job_requests')
->select('job_requests.*','user_infos.*')
->leftJoin('user_infos','user_infos.user_id','=','job_requests.user_id')
->where('user_infos.role','=','0');
if (isset($job_name) amp;amp; !empty($job_name)) {
$employees = $employees->andWhere('job_requests.job_name','like',"%$job_name%");
}
if (isset($location) amp;amp; !empty($location)) {
$employees = $employees->andWhere('job_requests.location','=',$location);
}
if (isset($gender) amp;amp; !empty($gender)) {
$employees = $employees->andWhere('user_infos.gender','=',$gender);
}
if (isset($salary) amp;amp; !empty($salary)) {
$employees = $employees->andWhere('job_requests.salary','<=',$salary);
}
if (isset($start_date) amp;amp; !empty($start_date) amp;amp; isset($end_date) amp;amp; !empty($end_date)) {
$employees = $employees->whereBetween('end_date',array($start_date,$end_date));
}
$employees->get();
Ответ №3:
Пожалуйста, попробуйте указать, в каком end_date
поле таблицы находится.