На мой взгляд, последнее «if»: метод «has» возвращает true, если значение присутствует в запросе. Почему вы ожидаете строку?
Вы можете изменить это "если" на:
if($request->has('search') && $request->get('search') != '')
Я не знаю, что вы хотите сделать, но, возможно, так:
if($request->has('search'))
Несколько советов для вас:
Но, я думаю, вам следует реорганизовать свой код. Подумайте, когда вам нужно добавить новое «если». Прежде всего, вы должны собрать все данные запроса только один раз и поместить в переменную. Почему вы все время заменяете переменную $ reportviewall?
public function viewType(Request $request){
{
$data = $request->only('program', 'datestart', 'dateend', 'search');
// You need to create a new method
$report = $this->chooseTheProgram($data['program']);
if(!$report && !empty($data['datestart']) && !empty($data['dateend']))
{
// You need to create a new method
$report = $this->retrieveBetween($data['datestart'],
$data['dateend']);
}
else if (!$report && !empty($data['search']))
{
// You need to create a new method
$report = $this->retrieveBy($data['search']);
}
return view('CrewProgram.ReportView.index', compact('report'));
}
Затем проверьте, отвечает ли метод еще за одну задачу. Попробуйте переместить код на слой «модель».
[] s