使用Wildcard Sql搜索TextField中的单词

时间:2015-02-11 02:51:49

标签: sql database laravel web wildcard

为了更清楚,我有这个字段

 Columntobesearch
   aword1 bword1
   aword2 bword2
   aword3 bword4

现在我想要做的是使用sql通配符进行搜索,所以我所做的就像这样

 %searchbox% 

我在搜索的两端放置了通配符,但它搜索的内容只是该字段的第一个字

当我搜索“aword'所有字段都在显示,但是当我搜索“bword'什么都没有显示,请帮助。

这是我的完整代码

    $Input=Input::all();
    $makethis=Input::flash();
    $soptions=Input::get('soptions');
    $searchbox=Input::get('searchbox');
             $items = Gamefarm::where('roost_hen', '=',Input::get('sex'))
    ->where($soptions, 'LIKE','%' . $searchbox . '%')
    ->paginate(12);

1 个答案:

答案 0 :(得分:0)

如果您使用mysql,可以试试这个:

<?php
  $q = Input::get('searchbox');
  $results = DB::table('table')
        ->whereRaw("MATCH(columntobesearch) AGAINST(? IN BOOLEAN MODE)",
            array($q)
        )->get();

当然,您需要使用

在迁移文件中准备表格以进行全文搜索
DB::statement('ALTER TABLE table ADD FULLTEXT search(columntobesearch)');

无论如何,这不是更具可扩展性和效率的FTS方式。 对于可扩展且可靠的全文搜索,我强烈建议您查看elasticsearch并对此任务实施任何Laravel package