Raj*_*ian 7 yii yii-cmodel yii-cactiverecord
YII中ActiveRecord和模型之间的关系或区别是什么?
我试图登录is_object(CActiveRecord::model('Project'));并期待false但它又回来了true;
由于日志记录表明它是一个对象,我认为它代表表中的一行,但我找不到任何代表coloumns的属性.
另外http://www.yiiframework.com/doc/api/1.1/CActiveRecord#model-detail声明它返回了一个CActiveRecord类的实例,但我找不到该对象中表行的任何值.
答案在您的文档链接中,model()是一个类级方法,它:
返回指定AR类的静态模型.返回的模型是AR类的静态实例.它用于调用类级方法(类似于静态类方法.)
假设您这样做:$model=CActiveRecord::model('Project');然后使用它$model可以调用CActiveRecord的所有类级方法,例如:
$allModels = $model->findAll(); // will give you all the models of Project
$someModel = $model->findByPk('pkValue'); // will give you the row with primary key value = pkValue
$model->deleteAll(); // will delete all the records of Project
// and so on
Run Code Online (Sandbox Code Playgroud)
编辑:
论坛中的这篇文章也说:(班级与静态方法的区别)
类级别方法是有效的静态方法,但有利于能够使用继承.也就是说,您可以在子类中覆盖类级别方法的操作,而如果您使用静态方法,则无法覆盖它.....所以,一般来说,你应该使用类级方法,而不是静态方法,因为它给你带来了继承的好处,虽然它可能感觉有点奇怪.然后使用$ class :: model() - > method()调用它们.