Yii2 三层设计模式:SQL Command、Query builder、Active Record(ORM)

用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效能。
原文地址:https://www.cnblogs.com/wilburxu/p/7989722.html