cakephp搜索数据库

时间:2012-05-24 13:34:54

标签: sql database cakephp

大家好我试图使用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的表中 - 我意识到,一旦搜索发生,我就没有任何代码可以做什么。但我正在努力解决这个问题,因为他们似乎没有在网上为此提供很多教程。

3 个答案:

答案 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'