Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
无法为CakePHP实现FriendsOfCake/Search插件_Cakephp_Search - Fatal编程技术网

无法为CakePHP实现FriendsOfCake/Search插件

无法为CakePHP实现FriendsOfCake/Search插件,cakephp,search,Cakephp,Search,我是CakePHP新手,正在尝试实现FriendsOfCake搜索插件: 首先,我只是想在Users表上实现一个基本的搜索,我觉得我很快就可以实现了,但不管出于什么原因,它都不起作用。我遵循了上面链接中的使用指南,但是为我的模型修改了它。我将包括我使用过的代码片段,并指出更改: 在我的Users表类中,我使用了以下代码: public function searchConfiguration() { $search = new Manager($this); $search-&g

我是CakePHP新手,正在尝试实现FriendsOfCake搜索插件:

首先,我只是想在Users表上实现一个基本的搜索,我觉得我很快就可以实现了,但不管出于什么原因,它都不起作用。我遵循了上面链接中的使用指南,但是为我的模型修改了它。我将包括我使用过的代码片段,并指出更改:

在我的Users表类中,我使用了以下代码:

public function searchConfiguration()
{
    $search = new Manager($this);
    $search->value('first_name', [
        'field' => $this->aliasField('first_name')
    ])

    ->like('q', [
        'before' => true,
        'after' => true,
        'field' => [$this->aliasField('first_name')]
    ]);

    return $search;
}
对于基本搜索,我只想实现对名字的搜索。一旦启动并运行,我将添加更多

在我的用户控制器中,我已将索引方法中的搜索代码修改为:

    $query = $this->Users->find('search', $this->Users->filterParams($this->request->query))->where(['first_name != ' => null ]);

    $this->set('users', $this->paginate($query));

    $this->set('_serialize', ['users']);
此时,如果我加载我的用户列表页面,它将返回0个结果。《使用指南》指出,我应该能够通过在url的末尾添加?q=John来运行查询,以获得包含John的用户列表,但我得到的结果集是空的。如果我将where语句修改为where(['first\u name!=\'John\']它将查询我的Users表并只返回John记录,因此我假设有什么东西没有将正确的参数传递给我的查询。据我所知,《使用指南》指出,在没有参数的情况下运行此操作会导致所有记录的列表不为空

有人能帮我指出正确的方向吗?我找不到其他任何东西显示我正在尝试使用的搜索插件的使用指南

作为参考,本应用程序使用CakePHP版本3.1.0

我还不熟悉使用StackOverflow,所以如果我在这里做得不正确,请告诉我,我会添加或编辑任何我需要的内容


谢谢!

这并没有明确回答我的问题,但我现在已经启动并运行了搜索。我所做的是从查询行中完全删除where子句

> $query = $this->Users->find('search',
> $this->Users->filterParams($this->request->query));
这删除了空要求并返回所有行。一旦我构建了表单,筛选器似乎正在工作,因此我不确定用户控制器中的where筛选器用于什么,或者为什么需要保留它。但是,我怀疑它的语法不正确,因为将其放在其中会导致0个结果


对于我的问题,我还是很想听听其他的想法,不过如果有人有任何意见或反馈,我会非常感激。

代码>->where(['title!='=>null])在示例中,自述文件中的代码只是一个如何添加附加条件的示例。这不是必需的。@ADmad-是的,这正是我收集的内容,但如果我正确地阅读了该部分代码,它不应该只过滤该字段为空的记录吗?如果是这样,我仍然应该得到结果,即使它不完全是我想要的,这让我相信它不是正确的语法。不管怎样,理解它是可选代码,而不是插件要求的一部分就可以解决问题。该代码示例是无效的,要匹配SQL中需要的非空值,
不是空的
,而不是
!=null
。I have更新了示例。