您当前的位置:首页 > 分类 > 技术资讯 > YII > 正文

Yii 操作数据库方法大全

发布时间:2014-12-25 15:16:46      来源:51推一把
【摘要】Yii 操作数据库方法大全

//yii 数据save后得到插入id  

$idObj->save();  //得到id (高级)
$onlyOne = $idObj->attributes[id]; //取得新插入的行ID

一  查询数据集合
1.$admin = Admin::model()->findAll($condition,$params); //该方法是根据一个条件查询一个集合
如:
findAll(username=:name,array(:name=>$username));

2.$admin=Admin::model()->findAllByPk($postIDs,$condition,$params);//该方法是根据主键查询一个集合我们也可以使用多个主键,如:findAllByPk(array(1,2));
如:
findAllByPk($id,name like:name and age=:age,array(:name=>$name,age=>$age));

3.$admin=Admin::model()->findAllByAttributes($attributes,$condition,$params);//该方法是根据条件查询一个集合,可以是多个条件,把条件放在数组里面
如:
findAllByAttributes(array(username=>admin));

4.$admin=Admin::model()->findAllBySql($sql,$params);//该方法是根据SQL语句查询一个数组
如:
findAllBySql(select * from admin where username=:name,array(:name=>admin));

二 查询对象的方法
1.$admin=Admin::model()->findByPk($postID,$condition,$params);//根据主键查询出一个对象
如:
findByPk(1);

2.$row=Admin::model()->find($condition,$params);//根据一个条件查询出一组数据,可能是多个,但是他只返回第一行数据
如:
find(username=:name,array(:name=>admin));

3.$admin=Admin::model()->findByAttributes($attributes,$condition,$params);//该方法是根据一个条件查询一组数据,可以是多个条件,把条件放到数组里面,他查询的也是第一条数据
如:
findByAttributes(username=:username,array(:username=>admin));

4.$admin=Admin::model()->findBySql($sql,$params);//该方法是根据SQL查询一组数据,他查询的也是第一条数据
如:
findBySql(select * from admin where username=:name,array(:name=>admin));

5.拼一个获得SQL的方法,再根据find查询出一个对象
$criteria = new CDbCriteria;
$criteria->select = username; //only select the username column
$criteria->condition = username=:username;
$criteria->params = array(:username=admin);
$post = Post::model()->find($criteria); //$params is not needed

三 查询个数,判断查询是否有结果
1.$n = Post::model()->count($condition,$params); //该方法是根据一个条件查询一个集合有多少条记录,返回一个int型数字
如:
count(username=:name,array(:name=>$username));

2.$n = Post::model()->countBySql($sql,$params); //该方法是根据SQL语句查询一个集合有多少条记录返回一个int型数字
如:
countBySql(select * from admin where username=:name,array(:name=>admin));

3.$exists = Post::model()->exists($condition,$params); //该方法是根据一个条件查询,得到的数组有没有数据,如果有数据返回true,否则没有找到


四 添加的方法
1.$admin = new Admin;
$admin->username = $username;
$admin->password = $password;

if($admin->save()>0){
    echo insert success;
}else{
    echo insert fail;
}

五 修改的方法
1.Post::model()->updateAll($attributes,$condition,$params);
$count = Admin::model()->updateAll(array(username=>11111,password=>11111),password=:pass,array(:pass=>111111a1));

if($count>0){
    echo update success;
}else{
    echo update fail;
}


2.Post::model()->updateByPk($pk,$attributes,$condition,$params); //$pk为主键,可以是一个也可以是一个集合,$attributes代表是要修改的字段的集合,$condition代表条件,$params传入的值
如:
$count = Post::model()->updateByPk(1,array(username=>admin,password=>admin));
$count = Post::model()->updateByPk(array(1,2),array(username=>admin,password=>admin));

if($count>0){
    echo update success;
}else{
    echo update fail;
}


3.Post::model()->updateCounters($counters,$condition,$params);//arry(status=>1)代表数据库中的admin表根据条件username=admin,查询出所有结果status字段都自加1
$count = Admin::model()->updateCounters(array(status=>1),username=:name,array(:name=>admin));

if($count>0){
    echo update success;
}else{
    echo update fail;
}

六 删除的方法
1.Post::model()->deleteAll($condition,$params);
$count = Admin::model()->deleteAll(username=:name and password=:pass,array(:name=>admin,:pass=>admin));

$id=1,2,3
deleteAll(id in (.$id.)); //删除id为这些的数据

if($count>0){
    echo delete success;
}else{
    echo delete fail;
}

2.Post::model()->deleteByPk($pk,$condition,$params);
$count = Admin::model()->deleteByPk(1);
$count = Admin::model()->deleteByPk(array(1,2),username=:name,array(:name=>admin));

if($count>0){
    echo update success;
}else{
    echo update fail;
}


/**************yii 直接sql操作数据库*******************/
$sql = "update jj_race_user set vote_num=vote_num+1 where id=".$uid;
$re = Yii::app()->db->createCommand($sql)->execute();

//查询
Yii::app()->db->createCommand($sql)->queryAll();



$connection = Yii::app()->db; //连接   Yii::app()->db->createCommand($sql);

//查找
$sql = "SELECT * FROM `tbl_user` ORDER BY id DESC";

$result = $connection->createCommand($sql)->queryAll();
$result = Yii::app()->db->createCommand($sql)->queryAll();

print_r($result);


//添加
$sql = " INSERT INTO `tbl_user` (`username`, `password`, `email`) VALUES (test, test, test@test.com) ";
$command=$connection->createCommand($sql);
print_r($command->execute());


//添加 返回自增id

$command1 = $connection->createCommand("SELECT last_insert_id()");
$result = $command1->queryAll();


//常用函数

(1)如果你执行的SQL语句有返回结果集: 例如SELECT。通常用query开头的系列函数:

$dataReader=$command->query(); // 执行一个 SQL 查询

$rows=$command->queryAll(); // 查询并返回结果中的所有行

$row=$command->queryRow(); // 查询并返回结果中的第一行

$column=$command->queryColumn(); // 查询并返回结果中的第一列

$value=$command->queryScalar(); // 查询并返回结果中第一行的第一个字


(2)你执行的SQL语句返回的不是结果集,只是状态值,例如:INSERT ,UPDATE,DELETE.则用execute()

$this->command->execute();


//使用事务的一种常见情形:CDbTransaction

$transaction = $connection->beginTransaction();

try{

$connection->createCommand($sql1)->execute();

$connection->createCommand($sql2)->execute();

.........

$transaction->commit();

}

catch(Exception $e){  // 如果有一条查询失败,则会抛出异常

$transaction->rollBack();

}