Я пытаюсь фильтровать данные через Eloquent в методе, который отвечает только на запросы AJAX, а затем возвращает представление вместе с отфильтрованными данными. Однако у меня есть вопрос:Использование красноречивого при фильтрации данных без избыточности
Во-первых, давайте посмотрим на мой код:
public function AJAX_get_reports(Request $request)
{
if($request->ajax())
{
$message = $request->get('message');
$severity = $request->get('severity');
if(strlen($message) > 0 && strlen($severity) > 0)
{
$data = ServerReport::where('severity', '=', $severity)->where('message', '=', $message)->get();
} elseif (strlen($message) > 0) {
$data = ServerReport::where('message', '=', $message)->get();
} elseif (strlen($severity) > 0) {
$data = ServerReport::where('severity', '=', $severity)->get();
} else {
$data = ServerReport::all();
}
return Response::json(View::make('dashboard.reports.index', compact('data'))->render());
}
}
Это был единственный способ, которым я был в состоянии сделать это, он работает, но я чувствую, что это не самый лучший способ для этого, особенно если у вас есть больше полей для фильтрации, код будет иметь огромное значение с проверками, есть ли лучший способ сделать это?
Например, построив запрос при выполнении проверок, а затем запустите его в конце?
if(strlen($message) > 0)
{
// add WHERE to query
}
if(strlen($severity) > 0)
{
// add WHERE to query
}
// Execute query and get the results
Спасибо, сэр, это то, что я искал. Гораздо проще. –
Рад помочь вам. Более упрощенный и более эффективный, конечно. Хорошего дня. –