0

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

4

3 回答 3

0

通过在输入用户名时对其进行验证,确保您的用户名是唯一的。 http://book.cakephp.org/2.0/en/models/data-validation.html

我不确定,但是这个 users.username 看起来你正在使用用户名作为可连接的外键!?那是完全错误的。

即使是这样,符号也是错误的并且不遵循 CakePHP 标准并且不会工作。那么它应该是 User.username 。

我建议您从 CakePHP 的博客教程重新开始并阅读这本书。

于 2012-05-24T13:45:25.397 回答
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()); 
        }
  }

希望这可以帮助

于 2012-05-24T13:49:08.700 回答
0

Cake 默认为 AND,但您可以指定 AND 和 OR 或 AND 或 OR 的任何层次结构...直到您头晕目眩:)

您的搜索可能格式如下:

    'or' => array( 
        'Model.column1 LIKE' => '%keyword%', 
        'Model.column2 LIKE' => '%keyword'
于 2012-05-24T14:16:00.157 回答