php - Laravel (php) 保存搜索选项

标签 php mysql laravel search save

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

我一直在绞尽脑汁想办法保存用户搜索并在他们访问搜索页面时自动填写表单,甚至在他们访问时自动搜索。

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

我考虑过将 gets 作为单独的字段保存到数据库中,当它们在页面上搜索和拉动它们并填写每个字段时,我该如何自动搜索?

或者我是否将其保存为 1 个字符串作为从 URL 中获取的字符串,例如 u=username&p=postcode 并设置路由以检查用户是否保存了搜索,如果他们访问/search,他们将被重定向到保存在数据库中的 url+get 选项。 (也不知道该怎么做。)

现在是最难的部分,即使有 gets 我也有多个字段,如性别和排序依据。你如何自动填写这些?

下面是我的表单代码

<?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() }}

最佳答案

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

模型。您可以创建具有User has many Searches 关系的专用表。并将对象保存到该表中。

JSON。您可以 serialize object使用 ->toJson() 方法并保存在 users 表中。只需添加 json 类型 column :

$table->json('options');

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

关于php - Laravel (php) 保存搜索选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36215683/

相关文章:

php - 在 uploadify 中上传完成后不想隐藏队列项目栏

MySQL:如何在 WHERE..IN 子句中使用 JSON_ARRAY?

java - 如何将本地 Google Cloud SQL stub 连接到 MySQL DB

php - 如何在 Laravel 中对大写字母、数字和方括号使用正则表达式验证,然后列为邮政编码范围?

mysql - Laravel AH01630 : client denied by server configuration on Specific API routes

php mysql 在 config.php 中获取变量并在另一个 php 文件中使用它 * 新的

php - 使用 echo 显示表中的前 100 个字符

php - 如何禁用不需要的请求? (MySQL、.htaccess、PHP)

php - Laravel json api 的可重复工作

php - Laravel 从 MySQL 中获取错误 : Trying to get property of non-object