📜  Yii-数据库访问(1)

📅  最后修改于: 2023-12-03 15:21:21.283000             🧑  作者: Mango

Yii-数据库访问

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参数指定了数据库类型、主机和数据库名,usernamepassword参数分别为数据库的用户名和密码,charset参数指定了字符集。

执行SQL查询

执行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

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访问数据库。你可以根据实际需求选择不同的方式。