#php #laravel #mongodb
#php #laravel #mongodb
Вопрос:
Моя функция listDepartment работает как извлечение всех моих записей из базы данных и отображение меня, я также добавил строку поиска, но после внедрения кода строки поиска он не отображал мне никаких записей.
вот мой файл контроллера
public function listDepartment(Request $request)
{
$listOfDepartment = $request->input('search');
$listOfDepartment=Department::where('nameOfDepartment', 'LIKE', "%{$request->input('search')}%")
->orwhere('createdBy', 'LIKE', "%{$request->input('search')}%")->orderBy('nameOfDepartment', 'ASC')->paginate(2);
$listOfDepartment->appends (array('search'=>Input::get('search')));
return view('pages.department', compact('listOfDepartment'));
}
Я хочу, чтобы, если я ничего не искал по умолчанию, он отображал мне все записи из моей коллекции отдела
, кто-нибудь поможет, пожалуйста???
и как я могу справиться, если у меня есть более одного такого поля
public function listOfLeave(Request $request)
{
$search = [$request->input('name'), $request->input('status'),];
$allLeaves = null;
if (!empty($search))
{
$allLeaves=LeaveManagement::where('username', 'LIKE', "%{$request->input('name')}%")->orderBy('username', 'ASC')
->orWhere('typeOfLeave', 'LIKE', "%{$request->input('leaveType')}%")->orderBy('typeOfLeave', 'ASC')
->orWhere('typeOfLeave', 'LIKE', "%{$request->input('leaveType')}%")->orderBy('typeOfLeave', 'ASC')
->orWhere('startDate', 'LIKE', "%{$request->input('appliedDate')}%")->orderBy('startDate', 'ASC')
->orWhere('status', 'LIKE', "%{$request->input('status')}%")->orderBy('status', 'ASC')->paginate(2);
return view('pages.newleaverequest')->with(['allLeaves'=>$allLeaves]);
}
else
{
$allLeaves=LeaveManagement::orderBy('username', 'ASC')->paginate(5);
}
$allLeaves->appends(array('name'=>Input::get('name')));
return view('pages.newleaverequest', compact('allLeaves'));
}
Ответ №1:
Попробуйте:
public function listDepartment(Request $request)
{
$search = $request->input('search');
$listOfDepartment = null;
if (!empty($search){
$listOfDepartment=Department::where('nameOfDepartment', 'LIKE', "%{$request->input('search')}%")
->orwhere('createdBy', 'LIKE', "%{$request->input('search')}%")->orderBy('nameOfDepartment', 'ASC')->paginate(2);
}
else {
$listOfDepartment=Department::orderBy('nameOfDepartment', 'ASC')->paginate(2);
}
$listOfDepartment->appends(array('search'=>Input::get('search')));
return view('pages.department', compact('listOfDepartment'));
}
Пожалуйста, замените paginate
часть инструкции фактическим кодом, для которого вы написали.
Для более чем одного поля:
public function listOfLeave(Request $request)
{
$allLeaves = null;
if (
!empty($request->input('name')) ||
!empty($request->input('leaveType')) ||
!empty($request->input('appliedDate')) ||
!empty($request->input('status'))
)
{
$flg = false;
if (!empty($request->input('name'))){
$flg = true;
$allLeaves=LeaveManagement::where('username', 'LIKE', "%{$request->input('name')}%");
}
if (!empty($request->input('leaveType'))){
if($flg){
$allLeaves=$allLeaves->orWhere('typeOfLeave', 'LIKE', "%{$request->input('leaveType')}%");
}
else {
$allLeaves=LeaveManagement::where('typeOfLeave', 'LIKE', "%{$request->input('leaveType')}%");
}
}
if (!empty($request->input('appliedDate'))){
if($flg){
$allLeaves=$allLeaves->orWhere('appliedDate', 'LIKE', "%{$request->input('appliedDate')}%");
}
else {
$allLeaves=LeaveManagement::where('appliedDate', 'LIKE', "%{$request->input('appliedDate')}%");
}
}
if (!empty($request->input('status'))){
if($flg){
$allLeaves=$allLeaves->orWhere('status', 'LIKE', "%{$request->input('status')}%");
}
else {
$allLeaves=LeaveManagement::where('status', 'LIKE', "%{$request->input('status')}%");
}
}
$allLeaves = $allLeaves->orderBy('username', 'ASC')
->orderBy('typeOfLeave', 'ASC')
->orderBy('appliedDate', 'ASC')
->orderBy('status', 'ASC')
->paginate(2);
return view('pages.newleaverequest')->with(['allLeaves'=>$allLeaves]);
}
else
{
$allLeaves=LeaveManagement::orderBy('username', 'ASC')->paginate(5);
}
$allLeaves->appends(array('name'=>Input::get('name')));
return view('pages.newleaverequest', compact('allLeaves'));
}
Комментарии:
1. пожалуйста, помогите, как я могу справиться, если у меня более 1 поля?? я обновил вопрос…
2. @John_rees итак, вы хотите выполнить поиск либо по имени, либо по статусу? Можете ли вы объяснить точные критерии, по каким полям вы хотите выполнить поиск?
3. Я хочу выполнить поиск по имени или статусу или оставить тип или appliedDate У меня есть 4 поля для поиска
4. ОК. Таким образом, если какое-либо из 4 полей присутствует в запросе, то поиск должен быть применен для этого поля, иначе нет. Поправьте меня?
5. @John_rees пожалуйста, проверьте ответ, я добавил в него новую функцию.