Yii2检查ActiveRecord是否成功加载了一条记录

时间:2017-02-27 06:45:45

标签: php yii2

如何检查数据库中是否存在数据并加载到ActiveRecord模型中。例如,在Kohana中,有函数loaded来检查ORM是否成功加载了记录。

  class Model_Image extends ORM {
    public function url($width = NULL)
    {
        if( ! $this->loaded()){
            return NULL;
        }
        ...
    }

我有一个名为Image的类,它是从ActiveRecord扩展而来的。类图像有url函数,在函数url里面我应该检查数据是否已加载,或者它是新的?

在Yii2中是否有类似的东西来检查ActiveRecord是否成功加载了记录。

3 个答案:

答案 0 :(得分:1)

在不满足条件的ActiveRecord模型上使用findOne()(只是one())时,它会返回null

在不满足条件的ActiveRecord模型上使用findAll()(简称all())时,它返回空数组。

所以你需要检查的是ActiveRecord是否为空。

示例:

$model = MyActiveRecordModel::findOne(1);
if (empty($model)) {
    // DB row not found
} else {
    // DB row found
}

另外,您可以检查模型的布尔属性isNewRecord

if ($model->isNewRecord) {
    // no previously db data loaded - 
    // new instance of model (new data not saved yet)
}

答案 1 :(得分:0)

如果这是一个项目:

$model = User::findOne(1);
if($model){
 //all good
}else{
 //no data
}

如果是多个模型那么

$model = User::findAll(1);

总是返回数组,所以如果数组没有元素,那么 foreach 将不会运行循环体。

答案 2 :(得分:0)

检查是否存在数据:

 <?php $checkForExistenceOfData = Model::find()->exists();
    if($checkForExistenceOfData == true){
       $getModelData = Model::findAll();
    }else{
       echo 'No Data Exists';
   }
 ?>