日期:2014-05-16 浏览次数:20549 次
上一篇介绍PHP使用DAO(数据库访问对象接口)访问数据库的方法,使用DAO需要程序员编写SQL语句,对于一些复杂的SQL语句,Yii提供了Query Builder来帮助程序员生成SQL语句,Query Builder提供了一中面向对象的方法动态创建SQL语句,打个不十分恰当的比较,PHP 的DAO和.Net 的DAO接口非常类型,Query builder 就有点像LINQ了,尽管和LINQ比起来功能小很多。对于一些简单的SQL查询,通常不需要借助于Query Builder,比如上篇中的查询Employee表格。
和直接使用SQL语句相比,使用Query Builder具有下面好处:
本例查询Chinook的两个表Customer和Employee, 查询EmployeeId=4管理的所有客户的联系信息。
如果使用SQL查询,可以写作:
SELECT c.FirstName, c.LastName , c.Address,c.Email FROM customer c INNER JOIN employee e ON c.SupportRepId=e.EmployeeId WHERE e.EmployeeId=4
public function actionIndex()
{
	$model = array();
	$connection=Yii::app()->db;
	$command=$connection->createCommand()
		->select('c.FirstName, c.LastName, c.Address,c.Email')
		->from('customer c')
		->join('employee e','c.SupportRepId=e.EmployeeId')
		->where('e.EmployeeId=4');
	$dataReader=$command->query();
	// each $row is an array representing a row of data
	foreach($dataReader as $row)
	{
		$customer= new DataModel();
		$customer->firstName=$row['FirstName'];
		$customer->lastName=$row['LastName'];
		$customer->address=$row['Address'];
		$customer->email