Yii数据库操作——名字空间(named scopes)的三种用法
一、单表的named scopes
1,scopes一般用法
用不同的名字空间获取符合各种条件的结果集。常用于:
a,同一个事物不同状态下的结果集。
b,首页或侧边栏展示。例如,取最新的5篇帖子。
c,冒泡的形式展示一个结果值。例如,某个机房有多少单子。
(1)在../models/Post.php中配置
public function scopes(){
return array(
'published'=>array(
'condition'=>'status=1',
),
'recently'=>array(
'order'=>'create_time DESC',
'limit'=>'5',
),
);
}
(2)在../controllers/PostController.php等地方使用
名字空间只用在find中。相当于过滤filter。
(1) 只用在find方法的左边。
(2) 类级别。必须使用ClassName::model()。
例如,$posts = Post::model()->published()->recently()->findAll();
2,带参数的名字空间
定义一个在名字空间(scopes)中已经存在的方法名。
public function recently($limit = 5){
$this->getDbCriteria()->mergeWith(array(
'order'=>'create_time DESC',
'limit'=>$limit,
));
return $this;
}
$posts = Post::model()->published()->recently(3)->findAll();
如果不指定3,则默认返回5。
3,缺省空间
比如,解决多语言问题。
public function defaultScope(){
return array(
'condition'=>"language='". Yii::app()->language ."'",
);
}
$content = Content::model()->findAll();
注:缺省空间只用在查询中,在插入或删除中被忽略。
二、多表关联的named scopes
$posts = Post::model()->published()->recently()->
with('comments')->findAll();
其中别名comments是在../models/Post.php数据库规则中定义。
分享到:
相关推荐
在PHP开发领域,Yii框架是一个高效且灵活的开源框架,特别适合用于构建Web 2.0应用程序。在Yii中,数据库操作是核心功能之一,它提供了丰富的API...在实际开发中,开发者可以根据具体需求选择合适的方式来操作数据库。
在`safeUp()`方法中,可以使用Yii 2提供的数据库操作API来创建数据表,并定义字段。例如: ```php public function safeUp() { $tableOptions = null; if ($this->db->driverName === 'mysql') { // 设置表为...
Yii框架数据库操作分享ppt (Mac版,windows需转换格式)
在Yii中,数据库访问是通过Active Record模式实现的,这是一种对象关系映射(ORM)技术,它允许我们用面向对象的方式来处理数据库记录。 1. **新增数据**: 在Yii中,新增数据通常是通过创建一个新的模型对象,...
AR是一种流行的对象关系映射(ORM)实现方法,它将数据库表映射为对象,将表中的记录映射为对象的实例。在Yii中,约定一个类代表一个表,一个实例代表一行数据,从而极大地简化了CRUD(创建、读取、更新和删除)等...
一种常见的方法是使用Gii(Yii的代码生成工具)创建一个控制器,该控制器包含一系列动作用于执行备份操作。这些动作可以调用系统的shell命令(如mysqldump)或者使用PHP的PDO扩展来执行SQL查询以创建SQL备份文件。 ...
Active Record模式是对象关系映射(ORM)技术的一种实现,它可以将数据库中的表以对象的形式表示,使得开发者可以用面向对象的方式来操作数据库记录。 在Yii2中进行数据库操作,首先需要定义数据模型(Model)。...
本文将详细介绍Yii数据库缓存的用法,并结合代码实例进行分析。 首先,我们来了解一下Yii缓存组件的基本操作,包括设置缓存、获取缓存、删除缓存和清除缓存。 在Yii中,使用缓存主要通过`Yii::app()->cache`对象来...
本文实例讲述了yii数据库的查询方法。分享给大家供大家参考,具体如下: 这里介绍两种查询方法。一种是直接查询,一种是使用借助criteria实现查询。 复制代码 代码如下:$user=User::model(); 1. 直接查询: $arr=...
Yii 操作数据库的 3 种方法 在 Yii 框架中,操作数据库是不可或缺的一部分。Yii 提供了多种方式来操作数据库,本文将介绍 Yii 操作数据库的 3 种方法,分别是原生 SQL 的 PDO 方式、Active Record 方式和 Query ...
在Yii框架中,Active Record(AR)是一种对象关系映射(ORM)技术,它使得开发者可以使用面向对象的方式来处理数据库操作。AR模式的核心思想是将数据库表映射为PHP类,每条数据库记录对应类的一个实例。这简化了对...
1. 使用第三方组件或中间件,如MyCAT、Sharding-JDBC等,这些组件可以代理数据库连接,从而实现读写分离。 2. 自己编写读写分离逻辑,例如在YII2应用中,可以自定义组件来实现数据库连接的读写分离,通过配置不同的...
本文将详细探讨如何在 Yii2 命令行环境中使用 migration 来实现数据库的备份与还原。 首先,我们需要了解什么是 `migration`。在软件开发过程中,随着应用需求的变化,数据库结构可能需要进行调整。Migration 就是...
在YII2框架中,操作数据库是开发Web应用程序不可或缺的一部分。本文将深入探讨两种主要的数据库操作方式:createCommand方式和AR(Active Record)方式,并通过实例解析其具体实现技巧。 一、createCommand方式 ...
Yii2框架中的ActiveRecord是一种模式,它提供了一个面向对象的接口来操作数据库中的数据。每一个AR类都关联着一张数据表,每一条AR记录对应表中的一行数据。开发者可以直接通过AR对象的属性来访问或修改对应的列值。...
对于需要跨多个数据库操作的情况,YII支持事务管理,可以确保原子性和一致性。 此外,考虑到微服务的可扩展性和容错性,可能需要实现数据库连接池和故障切换机制。在PHP中,可以使用第三方库如predis来实现Redis...
Yii2是使用PHP开发的现代Web应用程序框架,它拥有快速、安全和可扩展的特点。Yii2框架简化了许多Web开发任务,包括数据库操作。...开发者在使用Yii2进行Web开发时,可以通过这些数据库操作方法快速地开发功能模块。