0

文字列に特定のメールアドレスが含まれるすべての学校を検索する必要があります

現時点では、データベースにクエリを送信して、このような学校のリストを取得しています

$aSchools = School::model()->findAllByAttributes(array(
    'finished' => School::SCHOOL_CREATED,
));

その後、すべての学校を反復して、次のように mailAddress が含まれているかどうかを確認します。

$aFoundSChools = array();
    foreach($aSchools as $oSchool)
    {
        if (strpos($oSchool->mailAddress, Yii::app()->user->mailAddress))
        {
            $aFoundSChools [] = $oSchool;
        }
    }

しかし、これはもっときれいになると思いますよね?SQLの「LIKE」クエリのように、単一の関数でそれを行うことはできますか?

4

1 に答える 1

1

MongoDB は、正規表現の形式で "like" クエリをサポートしています。ただし、これはインデックスを使用できないことに注意してください。プレーンな PHP から、次のように構築します。

$query = array(
    'finished' => School::SCHOOL_CREATED,
    'mailAddress' => new MongoRegexp( '/' . addslashes( Yii::app()->user->mailAddress ) . '/' ),
);

メール アドレスに/.

Yii についてはよくわかりませんが、$query既存のテストを単に「終了」に置き換えるだけで、次のように使用できると思います。

$aSchools = School::model()->findAllByAttributes( $query );
于 2012-04-25T08:51:40.423 に答える