Sql cakephp搜索数据库

Sql cakephp搜索数据库,sql,database,cakephp,Sql,Database,Cakephp,大家好,我正在尝试使用cakephp搜索数据库中的用户名,用户名不是数据库中的主键,但必须是唯一的。下面是我为搜索函数编写的代码,但cake不喜欢它 function index(){ $this->User->recursive = 0; if ($this->data['users']['username']) { $this->set('users', $this->paginate('users', array('or' =&g

大家好,我正在尝试使用cakephp搜索数据库中的用户名,用户名不是数据库中的主键,但必须是唯一的。下面是我为搜索函数编写的代码,但cake不喜欢它

    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\u users的表中-我意识到一旦搜索发生,我没有任何代码来做什么。但是我正在竭尽全力想弄清楚这一点,因为他们的网站上似乎没有很多关于这一点的教程。

请在输入用户名时验证用户名是否唯一。

我不确定,但是这个users.username看起来像是在jointable中使用用户名作为外键!?这是完全错误的

即使是这样,表示法也是错误的,不符合CakePHP标准,也不起作用。然后应该是User.username


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

我可能错了,但是为什么除了“%”之外还有一个点呢?点是字符串连接运算符,您不提供任何内容作为第二个参数。另外,你在放置一个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()); 
        }
  }

希望这有助于

蛋糕默认为AND,但您可以指定AND和OR的任何层次结构 或和或。。。直到你头晕:)

您的搜索可能的格式如下:

    'or' => array( 
        'Model.column1 LIKE' => '%keyword%', 
        'Model.column2 LIKE' => '%keyword'

我没有看到任何用户名被搜索,只有
%
通配符。重点在哪里?