Yii:检查 CDbCriteria 中的 $criteria->compare 是否匹配该值
Yii : Check if $criteria->compare from CDbCriteria matched the value or not
有什么方法可以检查指定的条件是否成功。我正在尝试计算匹配的标准数量并相应地对结果进行排名。
$criteria->compare('users.id', $id);
如果上述条件确实产生匹配项,则执行 rank++
.
我发现上面的语句 returns 是 criteria
对象本身。所以,我真的很困惑,找不到办法做到这一点。
感谢您的帮助。谢谢
编辑
$count=YourModel::model()->countByAttributes(array('user_id'=>$id));
给出匹配的总行数。我想确定哪个特定行是匹配项并对该行进行排名并根据排名对结果进行排序。
其实CDbCriteria
只是一个搜索条件。这不是数据检索器。它只是设定了条件。要检索数据,您需要使用 CActiveDataProvider
或 ActiveRecord
.
我不知道你想在哪里使用上面的代码,但我建议使用下面的代码
$count=YourModel::model()->countByAttributes(array('user_id'=>$id));
或者如果您使用的是 CActiveDataProvider
那么
$dataProvider=new CActiveDataProvider('YourModel',array(
'criteria'=>$yourCriteria
));
$count=$dataProvider->totalItemCount;
编辑:
I want to identify which particular row was a match and rank that row
and sort the results according to the rank.
参考你上面的问题。实际上,您无法使用该行来识别该行。 Mysql
允许 Triggers
但您只能将它们与 INSERT,DELETE,UPDATE
等语句一起使用。所以如果你想修改数据库,那么你需要检索所有符合你的条件的行。将它们放在 foreach 循环中,对它们进行排序并保存模型。
$models=YourModel::model()->findAll($yourCriteria);
if(isset($models))
{
foreach($models as $model)
{
$model->rank=i;
$model->save();
i++;//rank number
}
}
有什么方法可以检查指定的条件是否成功。我正在尝试计算匹配的标准数量并相应地对结果进行排名。
$criteria->compare('users.id', $id);
如果上述条件确实产生匹配项,则执行 rank++
.
我发现上面的语句 returns 是 criteria
对象本身。所以,我真的很困惑,找不到办法做到这一点。
感谢您的帮助。谢谢
编辑
$count=YourModel::model()->countByAttributes(array('user_id'=>$id));
给出匹配的总行数。我想确定哪个特定行是匹配项并对该行进行排名并根据排名对结果进行排序。
其实CDbCriteria
只是一个搜索条件。这不是数据检索器。它只是设定了条件。要检索数据,您需要使用 CActiveDataProvider
或 ActiveRecord
.
我不知道你想在哪里使用上面的代码,但我建议使用下面的代码
$count=YourModel::model()->countByAttributes(array('user_id'=>$id));
或者如果您使用的是 CActiveDataProvider
那么
$dataProvider=new CActiveDataProvider('YourModel',array(
'criteria'=>$yourCriteria
));
$count=$dataProvider->totalItemCount;
编辑:
I want to identify which particular row was a match and rank that row and sort the results according to the rank.
参考你上面的问题。实际上,您无法使用该行来识别该行。 Mysql
允许 Triggers
但您只能将它们与 INSERT,DELETE,UPDATE
等语句一起使用。所以如果你想修改数据库,那么你需要检索所有符合你的条件的行。将它们放在 foreach 循环中,对它们进行排序并保存模型。
$models=YourModel::model()->findAll($yourCriteria);
if(isset($models))
{
foreach($models as $model)
{
$model->rank=i;
$model->save();
i++;//rank number
}
}