如何检查数据库中是否存在数据并加载到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是否成功加载了记录。
答案 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';
}
?>