Yii Framework2.0开发教程(6)数据库mysql--ActiveRecord

Active Record(活动记录,以下简称AR)提供了一个面向对象的接口,用以访问数据库中的数据。

一个AR 类关联一张数据表,每个 AR 对象对应表中的一行对象的属性(即
AR 的特性Attribute)映射到数据行的对应列

一条活动记录(AR对象)对应数据表的一行,AR对象的属性则映射该行的相应列。

您可以直接以面向对象的方式来操纵数据表中的数据,妈妈再不用担心我需要写原生 SQL 语句啦。

编辑models/Country.php

<?php

namespace app\models;

use yii\db\ActiveRecord;

//你不用在里面写任何代码。只需要像现在这样,Yii 就能根据类名去猜测对应的数据表名。
class Country extends ActiveRecord
{

}

或者

<?php

namespace app\models;

use yii\db\ActiveRecord;

//你不用在里面写任何代码。只需要像现在这样,Yii 就能根据类名去猜测对应的数据表名。
class Country extends ActiveRecord
{
	//@return string 返回该AR类关联的数据表名
	public static function tableName()
	{
		return 'country';
	}
}

编辑views/zhyoulun/helloworld.php

<?php
$country = new \app\models\Country;
$country->code = 'ZZ';
$country->name = 'Youlun';
$country->population = '1';
$country->save();
?>

访问网页http://localhost/basic/web/index.php?r=zhyoulun/helloworld,可以看到数据库中多了一条记录

查询数据

// 获取 country 表的所有行并以 name 排序
$countries = Country::find()->orderBy('name')->all();
echo '<table border="1">';
for($i=0;$i<count($countries);$i++)
{
	echo '<tr>';
	echo '<td>'.$countries[$i]['code'].'</td>';
	echo '<td>'.$countries[$i]['name'].'</td>';
	echo '<td>'.$countries[$i]['population'].'</td>';
	echo '</tr>';
}
echo '</table>';
// 用原生 SQL 语句检索客户:
$sql = 'SELECT * FROM customer';
$customers = Customer::findBySql($sql)->all();

以数组形式获取数据

// 以数组而不是对象形式取回客户信息:
$customers = Customer::find()
    ->asArray()
    ->all();
// $customers 的每个元素都是键值对数组

批量获取数据

// 一次提取 10 个客户信息
foreach (Customer::find()->batch(10) as $customers) {
    // $customers 是 10 个或更少的客户对象的数组
}
// 一次提取 10 个客户并一个一个地遍历处理
foreach (Customer::find()->each(10) as $customer) {
    // $customer 是一个 ”Customer“ 对象
}
// 贪婪加载模式的批处理查询
foreach (Customer::find()->with('orders')->each() as $customer) {
}

操作数据(AR 提供以下方法插入、更新和删除与 AR 对象关联的那张表中的某一行)

[[yii\db\ActiveRecord::save()|save()]]

[[yii\db\ActiveRecord::insert()|insert()]]

[[yii\db\ActiveRecord::update()|update()]]

[[yii\db\ActiveRecord::delete()|delete()]]

// 插入新客户的记录
$customer = new Customer();
$customer->name = '詹姆斯';
$customer->email = '[email protected]';
$customer->save();  // 等同于 $customer->insert();

// 更新现有客户记录
$customer = Customer::find($id);
$customer->email = '邦德@demo.com';
$customer->save();  // 等同于 $customer->update();

// 删除已有客户记录
$customer = Customer::find($id);
$customer->delete();

AR 同时提供了一下静态方法,可以应用在与某 AR 类所关联的整张表上。 用这些方法的时候千万要小心,因为他们作用于整张表! 比如,deleteAll() 会删除掉表里所有的记录。

[[yii\db\ActiveRecord::updateCounters()|updateCounters()]]

[[yii\db\ActiveRecord::updateAll()|updateAll()]]

[[yii\db\ActiveRecord::updateAllCounters()|updateAllCounters()]]

[[yii\db\ActiveRecord::deleteAll()|deleteAll()]]

参考:

http://www.yiichina.com/guide/2/db-active-record

转载请注明出处:http://blog.csdn.net/zhyoulun/article/details/40476471

时间: 2024-11-07 22:59:19

Yii Framework2.0开发教程(6)数据库mysql--ActiveRecord的相关文章

Yii Framework2.0开发教程(5)数据库mysql性能

继续<Yii Framework2.0开发教程(3)数据库mysql入门> 首先给予一定的尊重yii2数据库支持引进 Yii 基于 PHP's PDO一个成熟的数据库访问层的建立.它提供了一个统一的 API 并且克服了许多不同的 DBMS 违禁使用. Yii 默认支持下面 DBMS : MySQL MariaDB SQLite PostgreSQL CUBRID: version 9.1.0 or higher. Oracle MSSQL: version 2012 或更高版本号,如需使用 L

Yii Framework2.0开发教程(5)数据库mysql函数

继续<Yii Framework2.0开发教程(3)数据库mysql入门> 首先给一些关于yii2数据库支持的介绍 Yii 基于 PHP's PDO建立了一个成熟的数据库访问层.它提供统一的 API 并解决了一些不同 DBMS 产生的使用不利. Yii 默认支持以下 DBMS : MySQL MariaDB SQLite PostgreSQL CUBRID: version 9.1.0 or higher. Oracle MSSQL: version 2012 或更高版本,如需使用 LIMIT

Yii Framework2.0开发教程(8)输入验证

validate() 方法,在幕后为执行验证操作.先看一个简单的例子,例子的代码在<Yii Framework2.0开发教程(2)使用表单Form>. 类ZhyoulunController中函数actionEntry() ,其中有一句$model->validate(),就是来判断输入的名字和电子邮件是否正确. 修改models/EntryForm.php <?php namespace app\models; use yii\base\Model; class EntryFor

Yii Framework2.0开发教程(3)数据库mysql入门

沿用教程(2)的代码 第一步.在本地mysql数据库中新建数据库zhyoulun 第二步.在数据库中新建表并插入若干条数据 CREATE TABLE `country` ( `code` CHAR(2) NOT NULL PRIMARY KEY, `name` CHAR(52) NOT NULL, `population` INT(11) NOT NULL DEFAULT '0' ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `country

Yii Framework2.0开发教程(10)配合mysql数据库实现用户登录

1.首先在mysql创建一个存用户的表格 create table test_user ( user_id bigint(20) unsigned not null auto_increment comment 'ID', user_email varchar(100) not null comment '电子邮件', user_password varchar(100) not null comment '密码', user_access_token varchar(200) comment

Yii Framework2.0开发教程(4)在yii中定义全局变量

在yii中定义全局变量最好的地方是入口脚本处.也就是web文件夹中的index.php文件 例如我们在defined('YII_ENV') or define('YII_ENV', 'dev');后写上 defined('ZYL_HEHE') or define('ZYL_HEHE','zhyoulun-hehe'); 并在我们教程(1)中建立的views/zhyoulun/helloworld.php文件中写上 <?php echo 'hello world!'; //全局变量 echo co

Yii Framework2.0开发教程(7)账户注册开发

注册的过程:用户输入数据->提交服务器->插入数据库 由于AR继承自[[yii\base\Model]],所以它同样也支持Model的数据输入.验证等特性.例如,你可以声明一个rules方法用来覆盖掉[[yii\base\Model::rules()|rules()]]里的:你也可以给AR实例批量赋值:你也可以通过调用[[yii\base\Model::validate()|validate()]]执行数据验证. 当你调用 save().insert().update() 这三个方法时,会自动

VS2008下 使用C#做windows mobile 6.0开发 使用sqlite数据库

我使用的VS2008英文版的,不喜欢用中文版的. 现在用C#做相关开发,用到sqlite数据库. 网上找了很多,真正的教程特别少,都是贴的一堆垃圾代码.要么是无法配置通过的,错误一大堆,哎. 最后还是自己想办法解决了. 1.下载sqlite的运行库,首先网上的教程是让我们去http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki下载,但是页面上那么多,我们该选择哪个呢?   网页翻到最下面的  Legacy Ver

YII2.0安装教程,数据库配置前后台 [ 2.0 版本 ]

1.首先下载yii-advanced-app-2.0.6.tgz 2.解压到D:\wamp\www\yii2目录下面将目录advanced下所有文件剪切到 D:\wamp\www\yii2 3.打开cmd ,切换到当前目录 4.运行init.bat文件,提示安装版本 5.输入Yes,后进行安装 6.现在可以打开浏览器:输入http://localhost:8080/yii2/ 7.点击frontend>web>,查看表示安装成功 8.接下来我们开始 配置数据库,首先在当前目录下找到common