PHP Yii MongoDB 在字符串查询中


PHP Yii MongoDB in string query

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

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

$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"查询?

MongoDB支持正则表达式形式的"like"查询。请注意,这不能使用索引。从普通的PHP中,你可以像这样构造它:

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

如果您认为您的邮件地址可能包含/,则必须使用添加斜杠。

我不太了解 Yii,但我希望您可以使用这样的$query,只需将您现有的测试替换为刚刚"完成":

$aSchools = School::model()->findAllByAttributes( $query );