大家好我试图使用cakephp在数据库中搜索用户名,用户名不是数据库中的主键,但必须是唯一的。这是我搜索功能的代码,但蛋糕不喜欢它。
function index(){
$this->User->recursive = 0;
if ($this->data['users']['username']) {
$this->set('users',
$this->paginate('users', array('or' => array('users.username LIKE' => '%' . )));
else {
$this->set('users', $this->paginate());
}
}
}
数据库包含id(主键)和用户名。这样做的目的是发送朋友请求。用户搜索用户名,然后如果用户名在那里,则其他用户将在关系收件箱中收到他们的请求,并且可以选择“是”'或者没有'。
另一件事是,如果用户名存在,我希望将数据存储在名为users_users的表中 - 我意识到,一旦搜索发生,我就没有任何代码可以做什么。但我正在努力解决这个问题,因为他们似乎没有在网上为此提供很多教程。
答案 0 :(得分:0)
通过在输入用户名时对其进行验证,确保您的用户名是唯一的。 http://book.cakephp.org/2.0/en/models/data-validation.html
我不确定,但是这个users.username看起来像是在连接表中使用用户名作为外键!那完全错了。
即使这样,符号也是错误的,并且不符合CakePHP标准,也不会起作用。它应该是User.username。
我建议你重新开始使用CakePHP的博客教程并阅读本书。
答案 1 :(得分:0)
我可能错了,但为什么除'%'之外还有一个点?点是字符串连接运算符,您不提供任何内容作为第二个参数。此外,你正在提出一个OR条件,但只有一个参数。所以试试这个:
function index(){
$this->User->recursive = 0;
if ($this->data['users']['username']) {
$this->set('users',
$this->paginate('users', array('users.username LIKE' => '%')));
}
else {
$this->set('users', $this->paginate());
}
}
希望这有帮助
答案 2 :(得分:0)
Cake默认为AND,但您可以指定AND和OR的任何层次结构 或AND或OR ......直到你头晕目眩:)
您的搜索可能格式如下:
'or' => array(
'Model.column1 LIKE' => '%keyword%',
'Model.column2 LIKE' => '%keyword'