Yii操作数据库的3种方法
深入Yii框架下的数据库操作艺术:三种核心方法的
一、原汁原味的SQL执行:PDO方式
在Yii框架中,使用PDO方式执行原生SQL语句是一种直接而高效的方式。代码示例如下:
```php
$sql = "你的原生态sql语句"; //在此处输入你的SQL语句
::model()->dbConnection->createCommand($sql)->execute();
```
通过这种方法,你可以灵活地执行任何复杂的SQL语句,满足各种数据库操作需求。
二、Active Record方式
Active Record是Yii中一种强大的对象关系映射(ORM)方式,它允许你以面向对象的方式操作数据库。
(1)New方式
```php
$post=new Post;
$post->title='sample post';
$post->content='post body content';
$post->save();
```
通过创建模型对象,你可以像操作普通PHP对象一样来操作数据库记录。
(2)Criteria方式
Criteria方式提供了一种更灵活、更强大的查询构建方式。你可以使用CDbCriteria实例来指定复杂的查询条件。示例代码如下:
```php
$criteria=new CDbCriteria;
$criteria->select='title'; // 只选择'title'列
$criteria->condition='postID=:postID';
$criteria->params=array(':postID'=>10);
$post=Post::model()->find($criteria);
```
你也可以使用数组来替代CDbCriteria,示例代码如下:
```php
$post=Post::model()->find(array(
'select'=>'title',
'condition'=>'postID=:postID',
'params'=>array(':postID'=>10),
));
```
当需要根据多个列的值进行查询时,可以使用findByAttributes()方法。此方法允许你提供一个以列名为键、值为值的数组,然后根据这些值进行查询。需要注意的是,在一些框架中,类似findByNameAndTitle的方法可能会引起混淆、冲突和列名大小写敏感的问题。
三、Query Builder方式
Query Builder方式是一种更直观、更易用的查询构建方式。示例代码如下:
```php
$user = Yii::app()->db->createCommand()
->select('id, username, profile')
->from('tbl_user u')
->join('tbl_profile p', 'u.id=p.user_id')
->where('id=:id', array(':id'=>$id))
->queryRow();
```
通过Query Builder,你可以以链式调用的方式构建查询语句,使代码更简洁、易读。Query Builder还提供了丰富的查询方法和功能,可以满足各种复杂的查询需求。Yii框架提供了三种强大的数据库操作方式,你可以根据实际需求选择最适合自己的方式。无论你是初学者还是资深开发者,都能在这三种方式中找到自己的操作风格。