`
zccst
  • 浏览: 3319683 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

yii数据库操作——单表的增删查改

 
阅读更多
作者:zccst
目录
一、增删查改
二、验证规则
三、事务管理
四、名字空间。参考:Yii数据库操作——名字空间(named scopes)的三种用法

一、增删查改
1,创建
$post = new Post;
$post->title = "";
$post->content = "";
$post->created_at = "CDbExpression('NOW()')";
$post->save();

(1) 插入后可立即获得主键id。
$id = $post->id;   // 前提是auto_increment

(2) 某一个字段的值为缺省值时,可以在models/Class.php中修改
Class Post extends CActiveRecord{
public $title = 'new title';
$post = new Post;
echo $post->title; // 输出是: new title
}

(3) 使用CDbExpression
$post->create_time = new CDbExpression('NOW()');


2,查询【待补充】
(1) 通过主键查询
find("postID=:postID", array(':postID' => postID)
findByPk($id) // 单主键

(2) 通过非主键查询
find("postID=:postID", array(':postID' => postID)
findAll( id = $id )
findAll( id IN ( $id ) )



3,更新【待补充】
先find,并将对应字段赋新值,再保存

可以通过CActiveRecord::isNewRecord来判断是新建,还是更新。


4,删除
(1) 如果是一条记录
先找到后删除
$post=Post::model->findByPk(10);
$post->delete();

直接通过主键删除(类级别删除,不需要先载入记录)
Post::model->deleteByPk(10);

(2) 如果是多条记录(类级别删除,不需要先载入记录)
Post::model->deleteAll();


二、验证规则
验证规则(Data validation)发生在调用save()方法的时候。验证是基于在rules()方法中的定义。

if( $post->save() ){
// 验证通过
} else {
// 验证失败。通过getErrors()返回错误信息。
}

获取用户从表单提交的数据
$post->title   = $_POST['title'];
$post->content = $_POST['content'];
$post->save();

如果多了,可以通过下面的方式减轻(alleviate)复杂程度:
$post->attributes = $_POST['Post'];
$post->save();
//类似于:
foreach($_POST['Post'] as $name=>$value){
	if($name is a safe attribute)
		$model->$name = $value;
}

注意:里面的验证检验非常重要,否则用户可能绕过授权。


三、事务管理
dbConnection是CDbConnection的实例
官方文档
$model = Post::model();
$transaction = $model->dbConnection->beginTransaction();
try{
	$post = $model->findByPk(10);
	$post->title = 'new post title';
	$post->save();
	$transaction->commit();
} catch (Exception $e){
	$transaction->rollback();
}


实际项目
$trans = Yii::app()->db->beginTransaction();
try {
	$manufacturer = new Manufacturer();	
	$manufacturer->name = $name;
	$manufacturer->email = $email;
	$manufacturer->save();
	$trans->commit();
} catch (Exception $e) {
	$trans->rollback();
	$this->response(array('status' => 1, 'msg' => $e->getMessage()));	
}


其实使用的时候跟凡客体的我是凡客或淘宝体的亲一样。

注:Yii::app()后面的db在../config/main.php中已配置
'components'=>array(
	'user'=>array('allowAutoLogin'=>true,),
	'db'=>array("数据库连接参数"),
)



如果您觉得本文的内容对您的学习有所帮助,您可以微信:

分享到:
评论

相关推荐

    解析yii数据库的增删查改

    Yii框架是PHP开发中的一个流行选择,其强大的数据库操作功能使得开发者可以轻松地进行数据库的增删查改操作。在Yii中,数据库访问是通过Active Record模式实现的,这是一种对象关系映射(ORM)技术,它允许我们用...

    Yii2——使用数据库操作汇总(增删查改、事务)

    Active Record模式是对象关系映射(ORM)技术的一种实现,它可以将数据库中的表以对象的形式表示,使得开发者可以用面向对象的方式来操作数据库记录。 在Yii2中进行数据库操作,首先需要定义数据模型(Model)。...

    YII数据库操作大全

    在PHP开发领域,Yii框架是一个高效且灵活的开源框架,特别适合用于构建Web 2.0应用程序。在Yii中,数据库操作是核心功能之一,它提供了丰富的API...在实际开发中,开发者可以根据具体需求选择合适的方式来操作数据库。

    YII 2数据库迁移(Migrations) 使用教程

    在`safeUp()`方法中,可以使用Yii 2提供的数据库操作API来创建数据表,并定义字段。例如: ```php public function safeUp() { $tableOptions = null; if ($this->db->driverName === 'mysql') { // 设置表为...

    Yii框架数据库操作分享ppt

    Yii框架数据库操作分享ppt (Mac版,windows需转换格式)

    php 框架yii 数据库 DAO

    在Yii中,约定一个类代表一个表,一个实例代表一行数据,从而极大地简化了CRUD(创建、读取、更新和删除)等基本数据操作。 #### 三、使用Yii DAO **1. 安装PDO及驱动** 为了使用Yii的DAO,需要确保安装了PDO扩展...

    php YII框架数据库备份模块

    2. **ActiveRecord**:Yii的ORM(对象关系映射)层,使开发者能以面向对象的方式操作数据库记录,简化了数据库操作。 3. **Gii代码生成器**:Gii是一个自动生成代码的工具,可以帮助快速生成CRUD(创建、读取、更新...

    Yii数据库缓存实例分析

    Yii框架的数据库缓存是提高应用程序性能的一个重要机制,尤其是在处理大量数据库查询和减少数据库服务器负载方面非常有效。Yii提供了灵活的缓存机制,可以通过组件实现多种缓存策略。本文将详细介绍Yii数据库缓存的...

    Yii2框架数据库简单的增删改查语法小结

    Yii2框架内置了强大的Active Record功能,该功能允许开发者通过对象的方式来操作数据库,从而简化数据库的增删改查操作。在Yii2框架中,Active Record的实现非常灵活和高效,对于数据库操作的每一个基本动作都有对应...

    YII 数据库操作之 Active Record

    在Yii框架中,Active Record(AR)是一种对象关系映射(ORM)技术,它使得开发者可以使用面向对象的方式来处理数据库操作。AR模式的核心思想是将数据库表映射为PHP类,每条数据库记录对应类的一个实例。这简化了对...

    yii2命令行中使用migration备份和还原数据库

    在 Yii2 中,`migration` 是一个强大的功能,它允许开发者管理数据库的结构变化。本文将详细探讨如何在 Yii2 命令行环境中使用 migration 来实现数据库的备份与还原。 首先,我们需要了解什么是 `migration`。在...

    yii数据库的查询方法

    本文实例讲述了yii数据库的查询方法。分享给大家供大家参考,具体如下: 这里介绍两种查询方法。一种是直接查询,一种是使用借助criteria实现查询。 复制代码 代码如下:$user=User::model(); 1. 直接查询: $arr=...

    Yii框架数据库查询、增加、删除操作示例

    在Yii中,查询操作一般通过Active Record模型来实现,它允许开发者以对象的形式与数据库中的表进行交互。为了防止SQL注入,建议使用模型的find()方法构建查询。例如,查询id为1的数据,可以使用以下代码: ```php $...

    Yii操作数据库的3种方法

    Yii 操作数据库的 3 种方法 在 Yii 框架中,操作数据库是不可或缺的一部分。Yii 提供了多种方式来操作数据库,本文将介绍 Yii 操作数据库的 3 种方法,分别是原生 SQL 的 PDO 方式、Active Record 方式和 Query ...

    YII2数据库MySQL复制和读写分离配置

    2. 自己编写读写分离逻辑,例如在YII2应用中,可以自定义组件来实现数据库连接的读写分离,通过配置不同的数据库连接池,区分读操作和写操作的数据库连接。 3. 利用YII2的数据库迁移(migrations)功能,可以单独对...

    YII2框架中操作数据库的方式实例分析

    在YII2框架中,操作数据库是开发Web应用程序不可或缺的一部分。本文将深入探讨两种主要的数据库操作方式:createCommand方式和AR(Active Record)方式,并通过实例解析其具体实现技巧。 一、createCommand方式 ...

    YII 通用CURD外部Action 适合单表

    标题 "YII 通用CURD外部Action 适合单表" 提到的是在Yii框架中创建一个通用的CURD(创建、读取、更新、删除)操作的外部Action,这种Action适用于处理单个数据表的常见数据库操作。在Yii框架中,Action是Controller...

Global site tag (gtag.js) - Google Analytics