📅  最后修改于: 2023-12-03 15:21:21.283000             🧑  作者: Mango
Yii是一款PHP的高性能Web应用开发框架,提供了丰富的功能和工具来快速构建Web应用程序。其中之一就是关于数据库访问的功能,Yii提供了易于使用和强大的数据库访问类,让开发人员能够快速有效地访问数据库。
Yii支持多种类型的关系型数据库,包括MySQL、PostgreSQL、SQLite、Oracle等。
在Yii中访问数据库的第一步就是配置数据库连接。你可以在应用程序的配置文件中指定数据库连接参数,例如:
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=mydatabase',
'username' => 'myusername',
'password' => 'mypassword',
'charset' => 'utf8',
],
在这个配置数组中,class
参数指定了使用的数据库连接类,dsn
参数指定了数据库类型、主机和数据库名,username
和password
参数分别为数据库的用户名和密码,charset
参数指定了字符集。
执行SQL查询是访问数据库的常见方式。Yii提供了yii\db\Command
类来处理SQL查询,例如:
use yii\db\Command;
$connection = Yii::$app->db;
// 执行一个SELECT查询
$sql = 'SELECT * FROM users WHERE status=:status';
$command = $connection->createCommand($sql);
$command->bindValue(':status', 1);
$users = $command->queryAll();
// 执行一个UPDATE查询
$sql = 'UPDATE users SET status=:status WHERE id=:id';
$command = $connection->createCommand($sql);
$command->bindValue(':status', 0);
$command->bindValue(':id', $userId);
$command->execute();
在这个代码片段中,我们首先通过Yii::$app->db
获取到数据库连接实例,然后使用createCommand()
方法创建一个SQL查询对象。接着,我们可以通过bindValue()
方法绑定参数值,最后调用queryAll()
或execute()
方法执行查询。
除了使用yii\db\Command
类执行SQL查询,Yii还提供了查询构建器来更方便地构建和执行查询。查询构建器使用链式调用的方式来构建查询。
use yii\db\Query;
$query = new Query;
$query->select('*')
->from('users')
->where(['status' => 1])
->orderBy('id')
->limit(10);
$users = $query->all();
在这个代码片段中,我们首先创建了一个查询构建器实例,然后使用方法链来构建查询条件,最后调用all()
方法执行查询并返回查询结果。
Active Record是一种设计模式,它将数据表映射到面向对象的类中,使得开发人员能够以面向对象的方式访问数据库。在Yii中,yii\db\ActiveRecord
类就提供了Active Record功能。
use yii\db\ActiveRecord;
class User extends ActiveRecord
{
// 表示数据表名的静态方法
public static function tableName()
{
return '{{%users}}';
}
}
// 执行查询
$users = User::find()->where(['status' => 1])->all();
// 插入一条数据
$user = new User();
$user->username = 'testuser';
$user->email = 'testuser@example.com';
$user->status = 1;
$user->save();
在这个代码片段中,我们首先通过继承yii\db\ActiveRecord
类来创建一个User模型,并实现tableName()
方法来指定数据表名。然后我们可以使用find()
方法来查询数据,并使用save()
方法来插入一条数据。
注意,要使用Active Record功能,我们需要在应用程序的配置中指定数据库连接,并在模型类中覆盖tableName()
方法。
总之,Yii提供了多种访问数据库的方式,包括使用yii\db\Command
类执行SQL查询、使用查询构建器构建查询和使用Active Record访问数据库。你可以根据实际需求选择不同的方式。