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