轉自:http://blog.csdn.net/liruxing1715/article/details/42168953
有人會問爲什麼不用 Yii 的 Model 去操作 DB,原因很簡單,Yii 的 Model 寫法上是方便了很多,但是會執行多餘的 SQL,打開 Yii 的執行 log 就會發現。
打開跟蹤log的方法,config/main.php中 log routes 中添加
- [
- 'class' => 'CWebLogRoute',
- ]
所以爲了效率,爲了 DB 服務器的性能考慮,還是使用 createCommand 的好。
insert
- $row = Yii::app()->getDb()->createCommand()->insert('goods', array(
- 'good_name' => $goods_name,
- 'good_type' => $goods_type,
- 'price' => $price,
- 'buy_nums' => 0,
- 'commit_nums' => 0,
- 'create_time' => time(),
- ));
select
單表查詢
- $goodsTypes = Yii::app()->getDb()->createCommand()
- ->select('type_id, type_name')
- ->from('goods_type')
- ->where('status=:status', [
- ':status' => 1
- ])
- ->queryAll();
連表查詢
- $goods = Yii::app()->getDb()->createCommand()->from('goods g')
- ->select('g.good_id, g.good_name, gt.type_name, g.price, g.buy_nums, g.commit_nums, g.create_time')
- ->join('goods_type gt', 'g.good_type=gt.type_id')
- ->where('g.`status`=:status1 and gt.`status`=:status2', [
- ':status1' => 1,
- ':status2' => 2
- ])
- ->order('g.create_time desc')
- ->queryAll();
delete
- $row = Yii::app()->getDb()->createCommand()
- ->delete('goods', "good_id=:good_id", array(
- ':good_id' => $goods_id,
- ));
update
- $row = Yii::app()->getDb()->createCommand()->update('goods', [
- 'good_name' => $goods_name,
- 'good_type' => $goods_type,
- 'price' => $price,
- ], "good_id=:good_id", [
- ':good_id' => 1
- ]);
說明下,where 方法的使用方法很多,具體看 Yii 的代碼註釋,寫的很詳細。
就記錄這點吧~