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 に答える