>我需要找到所有在字符串中包含特定电子邮件地址的学校
此时,我正在向我的数据库发送查询以获取这样的学校列表
$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 );