【问题标题】:How to create functional search box to query data from a certain table?如何创建功能搜索框以从某个表中查询数据?
【发布时间】:2015-03-04 18:38:52
【问题描述】:

我想创建功能性搜索框来从某个表中查询数据。

数据库详情:

  • 表名:库存
  • 主键:id
  • 唯一索引:sku
  • 大小 = 120, 000 行

搜索框详情:

刀片/HTML

            {{ Form::open(array('action' => 'UrlController@query', 'method' => 'get')) }}

                <input autofocus name="search" id="search" placeholder="Enter Catalog # " type="text" />

                <span class="pull-right">

                    {{ Form::submit('Search', array('class' => 'btn btn-success btn-sm')) }}

                </span>

            {{ Form::close() }}

如您所见,我的搜索框名称是search


控制器功能:

public function query() {

        // grab GET parameters
        $search = Input::get('search');

        // apply search filter
        if ($search){

            //$inventories = Inventory::all(); # It's works if I do this

            $inventories = Inventory::where(function($inventories) use ($search){
                $inventories->where('search', 'like', '%'.$search.'%');
            });


            return View::make('inventories.index')
            ->with('inventories', $inventories);
        }else

        return View::make('inventories.index');

    }

最后:

我无法显示任何结果。

我做错了吗?这里:

$inventories = Inventory::where(function($inventories) use ($search){
                $inventories->where('search', 'like', '%'.$search.'%');
            });

在 Laravel 中完成此类任务的最有效方法是什么?

【问题讨论】:

    标签: php mysql laravel laravel-4


    【解决方案1】:

    你没有使用 get() 方法

    $inventories = Inventory::where(function($inventories) use ($search){
                    $inventories->where('search', 'like', '%'.$search.'%');
                })->get();
    

    并且还使用 paginate() 方法

    $inventories = Inventory::where(function($inventories) use ($search){
                        $inventories->where('search', 'like', '%'.$search.'%');
                    })->paginate(15);
    

    希望对你有帮助

    【讨论】:

    • 嘿,我试过get(),但它需要很长时间。当我尝试 $inventories = $inventories-&gt;paginate(10); 时,它非常快。
    【解决方案2】:

    试试这个,它对我很有效>>

    $columns = Schema::getColumnListing('inventories');

        $query = User::query();
    
        $search = Input::get('search');
        foreach($columns as $column){
            $query->orWhere($column, 'like', '%'.$search.'%');
        }
        $inventories = $query->get();
    
        return $inventories;
    

    【讨论】:

      猜你喜欢
      • 2015-04-10
      • 2020-01-13
      • 2013-04-02
      • 1970-01-01
      • 2017-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多