Как отобразить только что «искали» данные на странице в таблице?

Я сделал поисковую форму и пытался получить данные с помощью поиска. Но прежде чем я начну искать данные, уже извлекаемые на странице. Потому что я уже сделал контроллер таким. Когда я удаляю эту функцию поиска, страница работает только на белом экране. Так что проблема здесь, я хочу видеть таблицы и данные, получаемые после поиска, а не до. Но беспокоюсь о том, как сделать это или сделать это неправильно.

Вот контроллер:

public function welcome()
{

$estates = Estates::orderBy('price')->get();

$data['estates'] = $estates;
return view('welcome', $data);

}

public function search(Request $request)
{
$q = $request->q;
if (trim($q) !== ""){//here

$estates = \DB::table('estates')->where("name","LIKE", "%" . $q . "%")
->orWhere("address","LIKE", "%" . $q . "%")
->get();

dd($estates);

if(count($estates) > 0){
return view("welcome", compact('estates'))->withQuery($q);
}

}

$estates = array();//here
return view("welcome", compact('estates'))->withMessage("No Found!");//here
}

А также мой маршрут:

Route::get("/", "PagesController@welcome");

Route::post("/search", "PagesController@search")->name('search.route');

Также, когда я пытаюсь выполнить поиск, страница появляется не как таблица, а как эта.

Collection {#221 ▼
#items: array:1 [▶]
}

Если вам нужно увидеть мою страницу просмотра, я тоже могу ее добавить.
Спасибо за помощь!

0

Решение

Я решил проблему:

public function welcome()
{

$estates = array();//here

$data['estates'] = $estates;
return view('welcome', $data);

}

public function search(Request $request)
{
$q = $request->q;
if ($q !== null && trim($q) !== ""){//here

$estates = \DB::table('estates')
->where("name","LIKE", "%" . $q . "%")
->orWhere("address","LIKE", "%" . $q . "%")
->orWhere("company_name","LIKE", "%" . $q . "%")
->orderBy('price')->get();

if(count($estates) > 0){
return view("search", compact('estates'))->withQuery($q);
}

}

$estates = array();//here
return view("search", compact('estates'))->withMessage("No Found!");//here
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]