Laravel Eloquent 搜索表单查询(表单中的多个参数)
Posted
技术标签:
【中文标题】Laravel Eloquent 搜索表单查询(表单中的多个参数)【英文标题】:Laravel Eloquent Search Form Query (Multiple parameters in form) 【发布时间】:2015-01-16 02:03:55 【问题描述】:我正在尝试使用 Eloquent 查询 Laravel 中的数据库。当我单击视图上的提交按钮时,我的页面不会进入结果页面,我相信我没有查询数据库。我认为我的控制器 handleIndex 或路由存在问题,因为我正在尝试将查询结果呈现到结果页面上。
有什么想法吗?
这是我的 Routes.php 文件:
//Bind route parameters.
Route::model('game', 'Game');
// Show pages.
Route::get('/', 'GameController@index');
Route::get('/results', 'GameController@results');
Route::get('/profile/$Game', 'GameController@profile');
我的GameController.php如下:
public function index()
//show view of homepage
return View::make('index');
public function handleIndex()
//Handle each query from index form submissions
$Game = Game::query();
if(Input::has('Industry_Type'))
$Game->where('Industry_Type', Input::get('Industry_Type'));
if(Input::has('Office_State'))
$Game->where('Office_State', Input::get('Office_State'));
if(Input::has('Local_Name'))
$Game->where('Local_Name', Input::get('Local_Name'));
return View::make('results');
public function results(Games $game)
//show search results from index form
return View::make('results', compact('game'));
public function profile()
//show individual game proifile
return View::make('profile');
最后,我的观点 index.blade.php:
<div class='main_search_form'>
<!--<form action="login" method="get"> -->
Form::open(array('method' =>'GET'))
<div>
<div>Find a Game to Join. Love the Work you do.</div>
<div>Get Started</div>
<select id="jobclass">
<option id="jobclass" name="jobclass" value="" disabled selected>What Type of Work Do You Do?</option>
<option>Truck Driver</option>
<option>Web Developer</option>
</select>
</div>
<div>
<div>In</div>
<input type="text" placeholder="Enter State" name="">
<div>
<div>Search by Game</div>
<input type="text" placeholder="Name A Game" name="">
</div>
<div>
Form::submit('Find A Game', array('class' => 'btn'))
</div>
Form::close()
<!-- </form> -->
</div>
【问题讨论】:
【参考方案1】:你的代码有什么问题
1) handleIndex()
函数处理您的表单处理。但是,我在任何地方都没有看到您的代码尝试使用该功能。
2) handleIndex()
函数应该附加一个路由。
3) 在您看来,您在没有提供 URL 的情况下打开了表单 Form::open(array('method' =>'GET'))
,因此您的表单在同一页面(即索引)上发送数据。
4) 您的视图表单的输入没有名称。给他们一个,否则他们的值不会被提交。
如何正确处理
Routes.php
// Show pages.
Route::get('/', 'GameController@index');
Route::get('/results', 'GameController@results');
Route::get('/profile/$Game', 'GameController@profile');
//Form route handler
Route::get('/handle-index','GameController@handleIndex');
查看 index.blade.php
<div class='main_search_form'>
<!--<form action="login" method="get"> -->
<!-- Added url parameter to form open -->
Form::open(array('method' =>'GET','url'=>'/handle-index'))
<div>
<div>Find a Game to Join. Love the Work you do.</div>
<div>Get Started</div>
<select id="jobclass">
<option id="jobclass" name="jobclass" value="" disabled selected>What Type of Work Do You Do?</option>
<option>Truck Driver</option>
<option>Web Developer</option>
</select>
</div>
<div>
<div>In</div>
<input type="text" placeholder="Enter State" name="">
<div>
<div>Search by Game</div>
<input type="text" placeholder="Name A Game" name="">
</div>
<div>
Form::submit('Find A Game', array('class' => 'btn'))
</div>
Form::close()
<!-- </form> -->
【讨论】:
伟大的 cmets,谢谢。如果我可以跟进。我是不是意味着我不需要我在那里的句柄索引发布方法?另外:我怎么知道给我的视图表单输入什么名字?谢谢 您的表单将处理POST
方法?在您的代码中,它使用GET
。至于您的输入名称,它类似于普通的 PHP。您有一个<input type="text" name="price"
,在您的 PHP 代码中,您可以使用 Input::get('price')
访问它。
如果你刚开始接触 Laravel,我建议你加入我们:larachat.slack.com,laravel 开发者的聊天室
哈,谢谢!我会彻夜不眠地工作。我只是想让一个查询向我显示一个结果。
直接泡澡就好了。但是,我强烈建议您从教程开始:daylerees.com/codebright 它会为您省去很多麻烦。以上是关于Laravel Eloquent 搜索表单查询(表单中的多个参数)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel 中使用多表查询而不使用 Eloquent 关系