0

我需要在字符串中找到包含某个电子邮件地址的所有学校

此时,我正在向我的数据库发送查询以获取这样的学校列表

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

之后,我遍历所有学校以检查它们是否包含这样的邮件地址:

$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 回答