I made search form and trying to retrieving data by searching. But before I begin to search data already retrieving on the page. Because I made controller that way already. When I delete that retrieving function, page running just white screen. So the problem is here, I want to see table and data retrieving after search not the before. But troubled about how to do that or doing it wrong.
Here is controller:
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
}
And also my Route:
Route::get("/", "PagesController@welcome");
Route::post("/search", "PagesController@search")->name('search.route');
Also when I try to search, page is coming not as table, but as like this.
Collection {#221 ▼
#items: array:1 [▶]
}
If you need to see my view page, I can add it too. Thank you for your help!
I solved the problem:
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
}