答案在您的文档链接中,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
编辑:
论坛中的这篇文章还说:(类级别和静态方法之间的区别)
类级方法实际上是静态方法,但具有能够使用继承的好处。也就是说,您可以在子类中覆盖类级别方法的操作,而如果您使用静态方法,您将无法覆盖它。.... 所以,一般来说,你应该使用类级别的方法,而不是静态方法,因为它给你带来了继承的好处,尽管它可能感觉有点奇怪。然后使用 $class::model()->method() 调用它们。