如何检查数据是否存在于数据库中并加载到 ActiveRecord 模型中。例如,在 Kohana 中,有函数 loaded
来检查 ORM 是否成功加载记录。
class Model_Image extends ORM {
public function url($width = NULL)
{
if( ! $this->loaded()){
return NULL;
}
...
}
我有一个名为 Image 的类,它是从 ActiveRecord 扩展而来的。 Image 类有 url 函数,在函数 url 内我应该检查数据是否已加载,或者是新的?
Yii2中有类似的东西来检查ActiveRecord是否成功加载记录。
最佳答案
当您使用findOne()
时(简单地说 one()
)在 ActiveRecord 模型上,如果不满足条件,则返回 null
.
当您使用findAll()
时(简单来说 all()
)在 ActiveRecord 模型上,如果不满足条件,则返回空数组。
所以您需要检查的是 ActiveRecord 是否不为空。
示例:
$model = MyActiveRecordModel::findOne(1);
if (empty($model)) {
// DB row not found
} else {
// DB row found
}
此外,您还可以检查 bool 属性 isNewRecord
型号:
if ($model->isNewRecord) {
// no previously db data loaded -
// new instance of model (new data not saved yet)
}
关于php - Yii2 检查 ActiveRecord 是否成功加载记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42479389/