我是CakePHP的新手并尝试实现此处的FriendsOfCake Search插件:https://github.com/FriendsOfCake/search
对于初学者我只想尝试在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;
}
对于基本搜索,我只想在First Name上实现搜索。一旦启动并运行,我将添加更多。
在我的用户控制器中,我已将索引方法中的搜索代码修改为:
$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_name!= \'John \''],它将查询我的Users表并仅返回John记录,所以我假设某些东西没有将正确的参数传递给我的查询根据我的判断,使用指南指出在没有参数的情况下运行它应该会产生一个非NULL的所有记录的列表。
任何人都可以帮我指出正确的方向吗?我无法找到任何其他显示我正在尝试使用的搜索插件的使用指南。
参考此应用程序我们使用CakePHP版本3.1.0
我也是使用StackOverflow的新手,所以如果我在这里做错了,请告诉我,我会添加或编辑我需要的其他内容。
谢谢!
答案 0 :(得分:0)
这并没有具体回答我的问题,但我现在已经开始搜索了。我所做的是从查询行中完全删除where子句。
> $query = $this->Users->find('search',
> $this->Users->filterParams($this->request->query));
这删除了NULL要求并返回所有行。一旦我构建了表单,过滤器似乎正在工作,所以我不确定用户控制器中的where过滤器是什么,或者为什么可能需要保留。但是,我怀疑它不是一个正确的语法,因为把它放在那里导致0结果。
我仍然喜欢听到有关我的问题的其他想法,但是如果有人有任何意见或反馈,我会非常感激。