Laravel(php)保存搜索选项

时间:2016-03-25 07:18:55

标签: php mysql laravel search save

所以我使用的是laravel 5.2,我正在建立一个搜索表单,有多个搜索查询和选项。

我一直在试图想办法保存用户搜索并在访问搜索页面时自动填写表单,甚至在访问时自动搜索。

到目前为止,我一直将GET设置为变量并自动填写文本字段,但这只会持续他们在页面上的时间,而不是我所追求的,

我曾考虑将内存保存到数据库中作为单独的字段,当它们在页面上搜索并拉出它们并填写每个字段但是如何自动搜索?

或者我将其保存为1字符串作为来自URL的get,例如,u = username& p = postcode 并设置路线以检查用户是否已保存搜索,如果他们访问/搜索,则会将其重定向到保存在数据库中的url + get选项。 (也不知道如何做到这一点。)

现在最困难的部分即使有获取我有多个选择像性别和排序的字段。你怎么自动填写那些?

以下是我的代码

<?php 
if(isset($_GET['u'])) { $username   = $_GET['u']; } else { $username    = ''; }
if(isset($_GET['p'])) { $postcode   = $_GET['p']; } else { $postcode    = ''; }
if(isset($_GET['o'])) { $orderby    = $_GET['o']; } else { $orderby     = ''; } 
?>

{{ Form::open(['method' => 'GET']) }}
<div id="filter-panel" class="filter-panel collapse in">
    <div class="panel panel-default">
        <div class="panel-body">

            <form class="form-inline" role="form">
                <div class="row">
                    <div class="col-xs-6 col-sm-2">

                        {{ Form::input('search', 'u', $username, ['class' => 'form-control input-sm', 'placeholder' => 'username...']) }}
                    </div><!-- form group [search] -->

                    <div class="col-xs-6 col-sm-2">

                        {{ Form::input('search', 'p', $postcode, ['class' => 'form-control input-sm', 'placeholder' => 'postcode...']) }}
                    </div><!-- form group [search] -->
                    <div class="col-xs-6 col-sm-3">

                    <select id="attractedToGender" multiple="multiple" name="g[]" class="input-sm" >
                        <option value="1">Females</option>
                        <option value="2">Males</option>
                        <option value="3">Others</option>
                    </select>
                    </div><!--END form-group col-xs-6 col-sm-4-->
                    <div class="col-xs-12 col-sm-3">
                        <select id="pref-orderby" class="input-sm" name="o[]"  multiple="multiple">
                            <option value="1">Photo Only</option>
                            <option value="2">User Type</option>
                            <option value="3">Last Online</option>
                        </select>                                
                    </div> <!-- form group [order by] --> 
                    <div class="col-xs-6 col-sm-2 pull-right text-right">
                        {{Form::button('<i class="glyphicon glyphicon-search"></i> Search', array('type' => 'submit', 'class' => 'btn btn-primary btn-sm', 'style' => 'margin:0;'))}}
                    </div><!--END form-group col-xs-6-->


                </div>
            </form>
        </div>
    </div>
</div>    
{{ Form::close() }}

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点。最好的方法是将专用模型和保存数据作为JSON对象。

模型。您可以创建User has many Searches关系的专用表。只需将对象保存到此表中即可。

JSON。您可以使用->toJson()方法serialize object并坚持使用users表格。只需添加json类型column

$table->json('options');

在这两种情况下,您都可以直接使用该对象。