Как отобразить только что «искомые» данные на странице в таблице? - PullRequest
0 голосов
/ 11 октября 2018

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

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

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 [▶]
}

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

1 Ответ

0 голосов
/ 12 октября 2018

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

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
    }
...