试图让搜索栏在laravel 5中工作

时间:2015-04-07 19:40:09

标签: php search laravel-5 continuation-passing

我试图让搜索栏浏览我的数据库并获取包含用户输入的这2个随机数的所有数字。连续2个数字可以在字符串中的任何位置,然后它应该抓住整个字符串。我遇到的一个问题是表单是在布局中(也许它并不重要,但我仍然想知道如何将布局放在控制器中并将其包含在其他方法中)所以它没有自己的方法和表单本身我试图在搜索结果出现的情况下路由到另一个视图。截至目前,这是我得到的错误:Missing argument 1 for App\Http\Controllers\SearchController::SearchEngine()

在我的布局中:

{!! Form::open(array('method' => 'GET', 'url' => 'search_engine')) !!}
    <div class="form-group">
        {!! Form::label('SEARCH:') !!}
        {!! Form::text('search', null, ['class' => 'form-control',
          'placeholder' =>'(NSN or PN)', 'size' => '20']) !!}
        {!! Form::submit('Submit', ['class' => 'btn btn-primary form-control']) !!}
    </div>
{!! Form::close() !!}

在我的路线中: `Route :: get(&#39; search_engine&#39;,&#39; SearchController @ SearchEngine&#39;);

在我的控制器中:

 public function SearchEngine($i)
    {
        $search = input::get('search');
        $terms = explode(" ", $search);
        $query = fsgdata::where('fsg_number')->get();

        foreach($terms as $each) {
            $i++;
            if($i == 1) {
                $query .= "fsg_number LIKE '%$each%' ";
                echo $each;
            }
            else {
                $query .= "0R fsg_number LIKE '%$each%' ";
            }
        }

    // connect
        mysql_connect("localhost", "USERNAME", "PASSWORD");
        mysql_select_db("DB_NAME");

        $query = mysql_query($query);
        $numrows = mysql_num_rows($query);
        if ($numrows > 0) {

            while ($row = mysql_fetch_assoc($query)) {
                $fsg_number = $row['fsg_number'];

                echo "<h2>$fsg_number</h2>";
            }
        }
        else {
        }

    // disconnect
        mysql_close();

        return View('Partials.search_form');
    }

我的观点只是另一个搜索栏等。

不幸的是,也许我是一个愚蠢的哑巴,但是laravels文档并没有详细介绍他们的任何功能,而是选择做一个并完成示例图片样式。我是laravel时期的新人,所以对我来说,填补点数的任务可能非常艰巨。

1 个答案:

答案 0 :(得分:1)

我知道我已经很晚了,但为什么你不能使用Laravel的原生查询构建器呢?它会清理您的查询,自动清理它们。

看起来您也试图从表单中检索错误的数据。

从帖子表单获取数据的示例方法应如下所示:

public function retrieveFromPost(Request $request) {
    if ($request->has('param')) {
        $param = $request->input('param');
            $data = DB::select("SELECT *
            FROM table_name
            WHERE column_name LIKE :param" ['param' => $param]);
            return view('view', ['data' => $data]);
    } else { 
        return; 
    }

这将验证请求在&#34; param&#34;下是否有有效输入。从帖子表格发送的参数。它将使用SQL&#39; LIKE&#39;选择数据。声明,并返回一个视图,其中包含传递到视图中的所有检索数据。如果来自post请求的数据无效,else语句将返回并结束脚本。