yii1 curd操作

在yii1中curd基本可分为两种:DAO 和AR

DAO

基本格式为

$user = Yii::app()->db->createCommand()
    ->select('id, username, profile')
    ->from('tbl_user u')
    ->join('tbl_profile p', 'u.id=p.user_id')
    ->where('id=:id', array(':id'=>$id))
    ->queryRow();

 

在查询时返回的是数组格式,在删除和修改增加时代码的简介程度不如AR

eg:

“`
$command = Yii::app()->db->createCommand();
“`

insert()

    $command->insert('tbl_user', array(
    'name'=>'Tester',
    'email'=>'tester@example.com',
));

update()

$command->update('tbl_user', array(
    'name'=>'Tester',
        ), 'id=:id', array(':id'=>1));

delete()

$command->delete('tbl_user', 'id=:id', array(':id'=>1));

 

AR

在AR查询的时候返回的对象,Active Record (AR) 是一个流行的 对象-关系映射 (ORM) 技术,如果要查询多个数据的时候在访问时会产生一些未知的bug且不利于快速开发,个人在开发是选择用DAO的查询去查找多个记录。

而AR的插入,修改,删除会简单一些,

eg:

插入

“`
$post=new Post;
$post->title='sample post';
$post->content='post body content';
$post->save();
“`
 

修改

// 更新符合指定条件的行
Post::model()->updateAll($attributes,$condition,$params);
// 更新符合指定条件和主键的行
Post::model()->updateByPk($pk,$attributes,$condition,$params);
// 更新满足指定条件的行的计数列
Post::model()->updateCounters($counters,$condition,$params);

删除

[php]
Post::model()->deleteAll($condition,$params);
[/php]

读取

Post::model()->deleteAll($condition,$params);

特:

联表查询

left join


$travelers = $this->getDbConnection()->createCommand()
            ->select('t.id, t.last_name, t.first_name, t.birth, t.sex, t.country, tc.card_type, tc.card_no, tc.card_expire')
            ->from($this->tableName() . ' t')
            ->leftJoin(TravelerCert::model()->tableName() . ' tc', 'tc.traveler_id = t.id')
            ->where('t.id = :id and tc.card_type = :type', array(':id' => $id, ':type' => $type))
            ->queryRow();