Yii2.0数据库常用简单操作分享
2018-01-10| 程成| 1328| 0| Yii

yii2.0也使用了一段时间了,对数据库的一些简单操作基本都用到了,总结如下:


一、框架方法


1、查找 name = 'chengcheng' 的一条数据

Table::find() -> where(['name' => 'chengcheng']) -> one();


2、查找 name = 'chengcheng' 的所有数据

Table::find() -> where(['name' => 'chengcheng']) ->all();


3、查找 name = 'chengcheng' 且 sex = 'male' 的所有记录

Table::find() -> where(['name' => 'chengcheng']) -> andWhere(['sex' => 'male']) -> all();

等价于:

Table::find() -> where(['name' => 'chengcheng', 'sex' => 'male']) -> all();


4、查找 id 在 [1,100] 之间的数据

Table::find() -> andWhere(['between', 'id', 1, 100]) -> all();

注:这里两边是包括边界值的


5、查找 id = 1 和 id = 2的数据

Table::find() -> andWhere(['and', 'id = 1', 'id = 2']) -> all();


6、查找 id = 1 或 id = 2的数据

Table::find() -> andWhere(['or', 'id = 1', 'id = 2']) -> all();


7、查找 id 为 1,2,3,4 其中之一的值的数据(IN 写法)

Table::find() -> andWhere(['in', 'id', [1,2,3,4]]) -> all();


8、查找 name 中出现 'cheng' 的数据(LIKE 模糊查询)

Table::find() -> andWhere(['like', 'name', 'cheng']) -> all();


9、查找 name 中出现 'cheng' 且同时出现 'ma' 的数据

Table::find() -> andWhere(['like', 'name', ['cheng', 'ma']]) -> all();


10、查找 name 中 以 'cheng' 结尾的数据

Table::find() -> andWhere(['like', 'name', '%cheng', false]) -> all();


11、查找 id > 10 的数据

Table::find() -> andWhere(['>', 'id', 10]) -> all();


12、orderBy()应用

$query->orderBy([

       'id' => SORT_ASC,  升序  默认

       'name' => SORT_DESC,  降序

]); 


13、groupBy()应用

$query->groupBy(['id', 'name']);


14、having()应用

$query->having(['id' => 1]);


15、limit(),offset() 应用

$query->limit(10)->offset(20);



二、如何执行原生sql


1、查找一条数据


Table::findBySql('SELECT * FROM table')->one();

或者:

Yii::$app->db->createCommand('SELECT * FROM table')->queryOne();


2、查找所有数据


Table::findBySql('SELECT * FROM table')->all();

或者:

Yii::$app->db->createCommand('SELECT * FROM table')->queryAll();



注:引用变量时不要直接写到sql语句中


错误实例:

Yii::$app->db->createCommand("SELECT * FROM table WHERE id=$id")->queryOne();

 

上面这条sql不安全,如果别人攻击你服务器,$id传入一个delete sql语句很有可能会把你的数据表删除掉 

正确示例:

Yii::$app->db->createCommand("SELECT * FROM table WHERE id=:id", [':id' => $id])->queryOne(); 


以上罗列了常用的sql操作方法,你既可以通过yii框架方法实现,也可以执行原生sql。




×
作者:程成
QQ:492245711