Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel搜索引擎使用的是查询,但问题是它不准确_Php_Mysql_Laravel_Search_Laravel 5.3 - Fatal编程技术网

Php Laravel搜索引擎使用的是查询,但问题是它不准确

Php Laravel搜索引擎使用的是查询,但问题是它不准确,php,mysql,laravel,search,laravel-5.3,Php,Mysql,Laravel,Search,Laravel 5.3,我想让它准确的第一,它应该得到数据从标题,而不是得到数据描述我尝试了这一点,但它不准确,描述返回第一 这是一个现场示例,如果我只键入George,那么我想要电影George Lopez。如果我键入全名George Lopez,则返回其他内容。这很有效-帮助我 <?php use App\CommunityLink; //use App\User; use Illuminate\Support\Facades\Input; Route::get ( '/', function () {

我想让它准确的第一,它应该得到数据从标题,而不是得到数据描述我尝试了这一点,但它不准确,描述返回第一

这是一个现场示例,如果我只键入George,那么我想要电影George Lopez。如果我键入全名George Lopez,则返回其他内容。这很有效-帮助我

<?php
use App\CommunityLink;
//use App\User;
use Illuminate\Support\Facades\Input;

Route::get ( '/', function () {
    return view ( 'welcome' );
} );
Route::post ( '/search', function () {
    $q = Input::get ( 'q' );
    $user = CommunityLink::where ( 'title', 'LIKE', '%' . $q . '%' )->orWhere ( 'description', 'LIKE', '%' . $q . '%' )->get ();
    if (count ( $user ) > 0)
        return view ( 'welcome' )->withDetails ( $user )->withQuery ( $q );
    else
        return view ( 'welcome' )->withMessage ( 'No Details found. Try to search again !' );
} );

这里有一个适合您的解决方案。基本上,它是通过标题和描述进行搜索的,并将匹配标题的结果放在结果集合的顶部

//define the keywords variable 
$q = '%'.$request->q.'%'; // '%'.Input::get ( 'q' ).'%'

//Run the query 
$result = Community::where('title', 'Like', '?')
->orWhere('description', 'Like', '?')
->orderByRaw("
    CASE WHEN title LIKE ? THEN 1
         WHEN description LIKE ? THEN 2
         ELSE 3 END
")
->setBindings([$q, $q, $q, $q])
->get();
我们传递
$q
4次,因为我们在4个不同的地方调用它。 这可能不是最好的方法,但它可以很快完成任务


现在,您的结果将被过滤,顶部是匹配的标题,后面是匹配的描述。

谢谢您的回答,但我现在在尝试获取代码中的非objective属性时遇到了此错误,我给了您一个选择。你不能两者都用。就一个。好啊在代码中更改您编写
$q='%'。$request->q'%'的行将其更改为
$q='%'。输入::获取('q')。'%。它很好用。我测试了所有的东西都正常,非常感谢。你知道一些关于自动完成的东西吗?在拉拉维尔和采石场的下拉列表中,我搜索了很多,但没有找到任何对我有用的东西。如果正常,请标记我的答案并投票给我。如果你想拥有自动完成功能,你必须使用名为
Bootstrap-Typeahead
的工具。我已经为你投票,请帮助我在我的数据库中使用Bootstrap-Typeahead。我会告诉我的朋友们投票给你近5个朋友。但我希望自动完成功能提前从数据库中获得,谢谢