通常在一个 MVC 架构中,模型是负责维护状态,因为,它应该封装业务规则,定义数据的状态。在 Yii 中,一个模型可以是 CModel 的一个实例或它的子类。通常一个模型类包括数据的属性,可能还会有不同的标签(有些是为了显示给用户时更友好),并且可以设置一些规则进行验证。模型中的数据可能来自数据库的表或一个表单用户输入域。
Yii 实现了两种模型:表单模型(CFormModel 类)和 Active Record 模型(CActiveRecord 类)。他们都继承自同一个基类 CModel。CFormModel 代表的数据模型是从 HTML 表单中收集的输入,它封装了所有逻辑,如表单的验证和其他业务逻辑,这些是要应用到表单的域上。它能将这些数据存储在内存中,或者在一个 Active Record 的模型帮助下,存入数据库。
Active Record (AR)是一种设计模式,用面向对象的方式抽象的访问数据。在 Yii 中,每一个 AR 对象的实例可以是 CActiveRecord 类或它的子类,它包装了数据库表或视图中的一行记录,并封装了所有逻辑和访问数据库的细节,如果有大部份的业务逻辑,则必须使用这种模型。数据库表中一行每列字段的值对应 AR 对象的一个属性。