如何将搜索表单连接到数据库并检索 Laravel 上的数据
How to connect search form to database and retrieve data on Laravel
我正在尝试将我的搜索表单连接到我的数据库并从那里检索数据。但是出了点问题。我的控制器或我的路线......但我无法弄清楚。
问题是它直接显示数据而不搜索。
我想在搜索时看到数据。也试着搜索一下,这就来了:
Collection {#221 ▼
#items: []
}
我的观点在这里:
<form action="{{URL::to('welcome')}}" method="post" role="search" class="searchbox">
{{csrf_field()}}
<input type="text" name="q" class="search" placeholder="町, 地域, 会社名, 物件名">
<input type="submit" name="submit" class="submit" value="search">
</form>
@if(isset($details))
<p> here is the results <b>{{$query}}</b> are : </p>
@endif
<table cellspacing='0'>
<thead>
<tr>
<th>会社名</th>
<th>物件名</th>
<th>住所</th>
<th>販売価格</th>
<th>専有面積</th>
<th>間取り</th>
<th>竣工時期</th>
<th>入居時期</th>
</tr>
<thead>
<tbody>
@foreach($estates as $estate)
<tr class="even">
<td>{{$estate->company_name}}</td>
<td><a href="{{json_decode($estate->link)}}" target="_blank">{{$estate->name}}</a><br/></td>
<td>{{$estate->address}}</td>
<td>{{$estate->price}}</td>
<td>{{$estate->extend}}</td>
<td>{{$estate->rooms}}</td>
<td>{{$estate->old}}</td>
<td>{{$estate->entery}}</td>
</tr>
@endforeach
</tbody>
</table>
还有控制器和我的路线。
我在这里拧干什么?
public function welcome()
{
$estates = Estates::orderBy('price')->get();
$data['estates'] = $estates;
return view('welcome', $data);
}
public function search(Request $request)
{
$q = $request->q;
if ($q != " "){
$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);
}
}
return view("welcome")->withMessage("No Found!");
}
这是路线:
Route::get("/", "PagesController@welcome");
Route::post("/", "PagesController@search")->name('search.route');
我想不通。还有第一个控制器 welcome
在没有搜索表单的情况下顺利检索数据!但是当我尝试搜索时,我希望它为 运行。有什么帮助吗?谢谢!
这里你也可以这样做
像这样改变路线
Route::post("/", "PagesController@search")->name('routeName');
并像这样更改表单操作
<form action="{{route('routeName')}}" method="post" role="search" class="searchbox">
或编辑您的代码并将 url 传递给引号中的值
<form action="{{URL::to('welcome')}}" method="post" role="search" class="searchbox">
有关详细信息,请查看此 Laravel Routes
将表单操作更改为
<form action="{{ route('search.route') }}" method="post" role="search" class="searchbox">
将您的路线更改为
Route::post("/", "PagesController@search")->name('search.route');
在您的 PagesController 顶部添加 use Illuminate\Http\Request;
并将您的控制器方法更改为
public function search(Request $request)
{
$q = $request->q;
if ($q != " "){
$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);
}
}
return view("welcome")->withMessage("No Found!");
}
我正在尝试将我的搜索表单连接到我的数据库并从那里检索数据。但是出了点问题。我的控制器或我的路线......但我无法弄清楚。
问题是它直接显示数据而不搜索。 我想在搜索时看到数据。也试着搜索一下,这就来了:
Collection {#221 ▼
#items: []
}
我的观点在这里:
<form action="{{URL::to('welcome')}}" method="post" role="search" class="searchbox">
{{csrf_field()}}
<input type="text" name="q" class="search" placeholder="町, 地域, 会社名, 物件名">
<input type="submit" name="submit" class="submit" value="search">
</form>
@if(isset($details))
<p> here is the results <b>{{$query}}</b> are : </p>
@endif
<table cellspacing='0'>
<thead>
<tr>
<th>会社名</th>
<th>物件名</th>
<th>住所</th>
<th>販売価格</th>
<th>専有面積</th>
<th>間取り</th>
<th>竣工時期</th>
<th>入居時期</th>
</tr>
<thead>
<tbody>
@foreach($estates as $estate)
<tr class="even">
<td>{{$estate->company_name}}</td>
<td><a href="{{json_decode($estate->link)}}" target="_blank">{{$estate->name}}</a><br/></td>
<td>{{$estate->address}}</td>
<td>{{$estate->price}}</td>
<td>{{$estate->extend}}</td>
<td>{{$estate->rooms}}</td>
<td>{{$estate->old}}</td>
<td>{{$estate->entery}}</td>
</tr>
@endforeach
</tbody>
</table>
还有控制器和我的路线。 我在这里拧干什么?
public function welcome()
{
$estates = Estates::orderBy('price')->get();
$data['estates'] = $estates;
return view('welcome', $data);
}
public function search(Request $request)
{
$q = $request->q;
if ($q != " "){
$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);
}
}
return view("welcome")->withMessage("No Found!");
}
这是路线:
Route::get("/", "PagesController@welcome");
Route::post("/", "PagesController@search")->name('search.route');
我想不通。还有第一个控制器 welcome
在没有搜索表单的情况下顺利检索数据!但是当我尝试搜索时,我希望它为 运行。有什么帮助吗?谢谢!
这里你也可以这样做
像这样改变路线
Route::post("/", "PagesController@search")->name('routeName');
并像这样更改表单操作
<form action="{{route('routeName')}}" method="post" role="search" class="searchbox">
或编辑您的代码并将 url 传递给引号中的值
<form action="{{URL::to('welcome')}}" method="post" role="search" class="searchbox">
有关详细信息,请查看此 Laravel Routes
将表单操作更改为
<form action="{{ route('search.route') }}" method="post" role="search" class="searchbox">
将您的路线更改为
Route::post("/", "PagesController@search")->name('search.route');
在您的 PagesController 顶部添加 use Illuminate\Http\Request;
并将您的控制器方法更改为
public function search(Request $request)
{
$q = $request->q;
if ($q != " "){
$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);
}
}
return view("welcome")->withMessage("No Found!");
}