Я пытаюсь выполнить запрос к базе данных и создать фильтр в функции закрытия, моя модель (упрощенная) выглядит следующим образом:
table1 : id, ho, hod_id
hodet : id, description, dept_id
departments : id, name, deptcode
$ho
и $deptcode
будут проходить методом post.
Если значения записей отсутствуют, необходимо вернуть все данные. Это работает нормально. В то время как у $ ho есть данные, он также работает нормально. когда у deptcode есть данные, он также возвращает ненужные данные. Пожалуйста, исправьте меня.
Мой код будет таким, как показано ниже:
$hoaListQuery = table1::where ([["hod_id", ">", "0"]]);
if($ho != "") {
$hoaListQuery = $hoaListQuery->where('ho', 'like', '%'.$ho.'%');
}
$hoaListQuery = $hoaListQuery
->whereHas([
"hodet" => function($inHodetQuery) use($deptcode) {
$inHodetQuery->whereHas([
"departments" => function ($inDeptQuery) use($deptcode) {
$inDeptQuery->when($deptcode != "", function ($q) use($deptcode) {
return $q->where('deptcode', '=', $deptcode);
});
$inDeptQuery->select("id", "name", "deptcode");
}
])->with([
"departments" => function ($inDeptQuery) use($deptcode) {
$inDeptQuery->when($deptcode != "", function ($q) use($deptcode) {
return $q->where('deptcode', '=', $deptcode);
});
$inDeptQuery->select("id", "name", "deptcode");
}
])
->select("id", "description", "dept_id");
}
])
->with([
"hodet" => function($inHodetQuery) use($deptcode) {
$inHodetQuery->whereHas([
"departments" => function ($inDeptQuery) use($deptcode) {
$inDeptQuery->when($deptcode != "", function ($q) use($deptcode) {
return $q->where('deptcode', '=', $deptcode);
});
$inDeptQuery->select("id", "name", "deptcode");
}
])->with([
"departments" => function ($inDeptQuery) use($deptcode) {
$inDeptQuery->when($deptcode != "", function ($q) use($deptcode) {
return $q->where('deptcode', '=', $deptcode);
});
$inDeptQuery->select("id", "name", "deptcode");
}
])->select("id", "description", "dept_id");
}
])
->select("id", "ho", "hod_id");
$hoaList = $hoaListQuery->get();
Заранее спасибо ..