本文实例分析了Yii中Model(模型)的创建及使用方法。分享给大家供大家参考,具体如下:
YII 实现了两种模型,表单模型(CFormModel类)和Active Record模型(CAtiveRecord类),它们都继承自CModel类。 CFormModel代表的数据模型是从HTML表单收集的输入,封装了所有逻辑(如表单的验证和其它业务逻辑,应用到表单的域上)。它能将数据存储在内 存中,或者在一个Active Record的帮助下,存入数据库里。
数据库连接操作
在config/main.php中
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=oss',
'emulatePrepare' => true,
'username' => 'root',
'password' => 'hahaha',
'charset' => 'utf8',
//表前缀
'tablePrefix'=>"oss_"
),
打开注释,php要支持pdo
查看操作日志
//显示日志信息,包括sql的查询信息
array(
'class'=>'CWebLogRoute',
),
将注释打开
一. 基于CActiveRecord的Model
Active Record(AR) 是一种设计模式,用面向对象的方式抽象的访问数据,Yii中,每一个AR对象的实例都可以是CActiveRecord类或者它的子类。它包装了数据库表 或视图中的一行记录,并封装了所有的逻辑和风闻数据库的细节,有大部分的业务逻辑,必须使用这种模型。数据库表中一行每列字段的值对应AR对象的一个属 性。它将表映射到类,行映射到对象,列则映射到对象的数据。也就是说每一个Active Record类的实例代表了数据库中表的一行。但一个 Active Record类不单单是数据库表中的字段跟类中属性的映射关系。它还需要在这些数据上处理一些业务逻辑,定义了所有对数据库的读写操作。
1) 声明一个基于CActiveRecord 类的Model
class Post extends CActiveRecord
{
public static function model($className=__CLASS__)
{
return parent::model($className);
}
public function tableName()
{
return '{ {post}}';
}
public function primaryKey()
{
return 'id';
// return array('pk1', 'pk2');
}
}
2) 使用父类的方法完成数据库操作
(1) Insert:
$post=new Post;
$post->title='sample post';
$post->content='content for the sample post';
$post->create_time=time();
$post->save();
(2) Select: 常用几种方法
// find the first row satisfying the specified condition
$post=Post::model()->find($condition,$params);
// find the row with the specified primary key
$post=Post::model()->findByPk($postID,$condition,$params);
// find the row with the specified attribute values
$post=Post::model()->findByAttributes($attr