关于Yii2.0框架中如何执行原生sql,大致分为两个步骤:
$sql = "select * from table where id = 1"; $connection = Yii::$app->ab->createCommand($sql);
这句话分为两部分,第一部分是Yii::$app()->db是获得数据库连接对象CDbConnection;
第二部分是调用createCommand()方法获得CDbCommand对象。
用于数据更新(非查询)操作(INSERT, UPDATE 和 DELETE),返回的是操作受影响的记录行数
$rowCount=$connection->execute();
用于查询,对应的是 SELECT 语句。
Yii::$app()->$connection->queryAll(); //查询所有行数据
Yii::$app()->$connection->queryRow(); //查询第一行数据
Yii::$app()->$connection->queryColumn(); //查询第一列数据
Yii::$app()->$connection->queryScalar(); //查询第一行的第一字段
注:Yii::$app()->$connection->query();
返回CDbDataReader对象,注意这代表结果集而不是记录,可以通过以下方法来获取(遍历)记录:
// CDbDataReader::read()可以一次获取一行数据,到末尾时返回false // CDbDataReader实现了迭代器接口因此可以使用foreach遍历 // 一次性返回所有的记录(数组) while(($row=$dataReader->read())!==false) { foreach($dataReader as $row){ $rows=$dataReader->readAll(); } }