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' =&gt;'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。您有一个&lt;input type="text" name="price",在您的 PHP 代码中,您可以使用 Input::get('price') 访问它。 如果你刚开始接触 Laravel,我建议你加入我们:larachat.slack.com,laravel 开发者的聊天室 哈,谢谢!我会彻夜不眠地工作。我只是想让一个查询向我显示一个结果。 直接泡澡就好了。但是,我强烈建议您从教程开始:daylerees.com/codebright 它会为您省去很多麻烦。

以上是关于Laravel Eloquent 搜索表单查询(表单中的多个参数)的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent builder 查询日志

Laravel Eloquent 查询两个表

Laravel Eloquent - 查询数据透视表

如何在 Laravel 中使用多表查询而不使用 Eloquent 关系

使用 Laravel 的查询构建器或 Eloquent 将一个表与一个临时表进行内部连接

表单没有正确地将数据插入数据库 [Laravel][Eloquent]