用Yii2也有一段时间了,发现Yii2 Framework对Database的操作有非常良好的结构和弹性。
接下来介绍三种数据库操作方式。
SQL Command Level:
// Get DB componet of Application $db = Yii::$app->db; # Get data form SQL execution $ arrData = $db->createCommand('SELECT * FROM table limit 10') ->queryAll(); print_r($arrData);
Query Builder Level
$arrData = (new yiidbQuery()) ->select(['*']) ->from('table') ->where([]) ->limit(10) ->all(Yii::$app->db); // 选择数据库 print_r($arrData);
Active Record (ORM)
$objData = appmodelsActiveRecordModal::find() ->select(['*']) ->where([]) ->limit(10) ->all(); print_r($objData);
那么这三种对区别是什么呢?
1. SQL Command 本身(yiidbcommand) 作为Query builder、Active Record对底层,所以需要在createCommand() 之后使用。
2. Active Record(ORM) 一个Object会带有多个成员变量和成员函数导致性能上的损耗。
3. Active Record使用asArray() 可以略过ORM的一些细节上处理,将返回值由对象转为数组,达到Builder Level效能。