如何创建像蛋糕一样的反转

时间:2014-12-23 23:15:27

标签: php mysql cakephp

我需要创建一个类似逆的查询,类似这样的

SELECT * FROM identities where 'keyword' like concat('%',identities.name,'%')

keyword =用户输入的内容

identities.name =表格列

但我需要使用cakephp语法创建

$this->Indentity->find('all', array('conditions' => array('here something to help me'));

使用cakephp无法正常工作的正常LIKE,因为我喜欢

此查询无效,因为是正常的LIKE

$this->Indentity->find('all', array('conditions' => array('Indentity.name LIKE' => $keyword));

此查询无效,因为concat('%',identitiesname,'%')使用类似字符串而不是函数

$this->Indentity->find('all', array('conditions' => array($keyword . ' LIKE' => "concat('%',`identities`.`name`,'%')"));

1 个答案:

答案 0 :(得分:0)

a)您始终可以将虚拟字段用于此类特定查询

b)在这种情况下,将它写在一行中可能最简单:

$conditions = array($keyword . " LIKE CONCAT('%', `identities`.`name`, '%')";
$result = $this->Indentity->find('all', array('conditions' => $conditions));

注意在这种情况下缺少=>键值运算符以表示ORM不会转义该语句。

注意:请记住,您必须以人们无法在查询中注入虚拟内容的方式手动保护(转义,清理,...)输入,例如:使用datasources value()方法。