Yii活跃记录 Yii查询生成器 Yii数据库迁移 Active Record为访问数据提供了一个面向对象的API。Active Record类与数据库表关联。 Yii为以下关系数据库提供Active Record支持 - MySQL 4.1或更高版本 SQLite 2和3: PostgreSQL 7.3或更高版本 Microsoft SQL Server 2008或更高版本 CUBRID 9.3或更高版本 神谕 ElasticSearch 狮身人面像 另外,Active Record类支持以下 NoSQL 数据库 - Redis 2.6.12或更高版本 MongoDB 1.3.0或更高版本 在为单独的数据库表声明Active Record类(在我们的例子中为 MyUser 模型)之后,您应该按照以下步骤从它查询数据 - 使用yii \ db \ ActiveRecord :: find()方法创建一个新的查询对象。 构建查询对象。 调用查询方法来检索数据。 第1步 - 以 这种方式修改 actionTestDb() 方法。 public function actionTestDb() { // return a single user whose ID is 1 // SELECT * FROM `user` WHERE `id` = 1 $user = MyUser::find() ->where(['id' => 1]) ->one(); var_dump($user); // return the number of users // SELECT COUNT(*) FROM `user` $users = MyUser::find() ->count(); var_dump($users); // return all users and order them by their IDs // SELECT * FROM `user` ORDER BY `id` $users = MyUser::find() ->orderBy('id') ->all(); var_dump($users); } 上面给出的代码展示了如何使用ActiveQuery来查询数据。 第2步 - 转到 http:// localhost:8080 / index.php?r = site / test-db ,您将看到以下输出。 通过主键值或一组列值查询是一项常见任务,这就是Yii提供以下方法的原因 - yii \ db \ ActiveRecord :: findOne() - 返回一个Active Record实例 yi \ db \ ActiveRecord :: findAll() - 返回一个Active Record实例数组 示例 - public function actionTestDb() { // returns a single customer whose ID is 1 // SELECT * FROM `user` WHERE `id` = 1 $user = MyUser::findOne(1); var_dump($user); // returns customers whose ID is 1,2,3, or 4 // SELECT * FROM `user` WHERE `id` IN (1,2,3,4) $users = MyUser::findAll([1, 2, 3, 4]); var_dump($users); // returns a user whose ID is 5 // SELECT * FROM `user` WHERE `id` = 5 $user = MyUser::findOne([ 'id' => 5 ]); var_dump($user); } 将数据保存到数据库 要将数据保存到数据库,您应该调用 yii \ db \ ActiveRecord :: save() 方法。 第1步 - 以 这种方式修改 actionTestDb() 方法。 public function actionTestDb() { // insert a new row of data $user = new MyUser(); $user->name = 'MyCustomUser2'; $user->email = 'mycustomuser@gmail.com'; $user->save(); var_dump($user->attributes); // update an existing row of data $user = MyUser::findOne(['name' => 'MyCustomUser2']); $user->email = 'newemail@gmail.com'; $user->save(); var_dump($user->attributes); } 第2步 - 转到 http:// localhost:8080 / index.php?r = site / test-db ,您将看到以下输出。 要删除一行数据,你应该 - 检索活动记录实例 调用 yii \ db \ ActiveRecord :: delete() 方法 第1步 - 以 这种方式修改 actionTestDb() 方法。 public function actionTestDb() { $user = MyUser::findOne(2); if($user->delete()) { echo "deleted"; } } 步骤2 - 在Web浏览器的地址栏中键入 http:// localhost:8080 / index.php?r = site / test-db ,您将看到以下输出。 第3步 - 例如,您也可以调用 yii \ db \ ActiveRecord :: deleteAll() 方法删除多行数据。 public function actionTestDb() { MyUser::deleteAll('id >= 20'); } Yii查询生成器 Yii数据库迁移