2

我正在为 cakephp 使用 ICHIKAWAY 的 mongodb 驱动程序。

我真正不明白的一件事是如何使用 MONGODB 在 cakephp 中执行“LIKE”语句。

我试过这个说法:

$users = $this->User->find('all', array('conditions' => array('data_type' => 'user', 'profile.firstname LIKE' => '%'.$string)));

但它不起作用,因为“LIKE”是一个 mysql 函数。

感谢您的建议。

4

1 回答 1

3

使用 MongoRegex

Mongo DB 有一个 LIKE 运算符 - 它只是一个正则表达式,使用它:

$users = $this->User->find('all', array(
    'conditions' => array(
        'data_type' => 'user', 
        'profile.firstname' => new MongoRegex("/$string/i")
     )
));

存在 SQL 兼容性行为

Mongodb 驱动程序包含提供sql 语法兼容性的行为。要使用它,只需确保您的模型使用此行为:

class User extends AppModel {

    $actsAs = array(
        'MongoDB.SqlCompatible'
    )
}

然后您可以完全按照问题中的内容使用您的查询:

$users = $this->User->find('all', array(
    'conditions' => array(
        'data_type' => 'user', 
        'profile.firstname LIKE' => '%'.$string
     )
));
于 2013-06-17T09:17:10.070 回答