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

Yii数据库操作——名字空间(named scopes)的三种用法

 
阅读更多
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数据库规则中定义。

分享到:
评论

相关推荐

    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需转换格式)

    解析yii数据库的增删查改

    在Yii中,数据库访问是通过Active Record模式实现的,这是一种对象关系映射(ORM)技术,它允许我们用面向对象的方式来处理数据库记录。 1. **新增数据**: 在Yii中,新增数据通常是通过创建一个新的模型对象,...

    php 框架yii 数据库 DAO

    AR是一种流行的对象关系映射(ORM)实现方法,它将数据库表映射为对象,将表中的记录映射为对象的实例。在Yii中,约定一个类代表一个表,一个实例代表一行数据,从而极大地简化了CRUD(创建、读取、更新和删除)等...

    php YII框架数据库备份模块

    一种常见的方法是使用Gii(Yii的代码生成工具)创建一个控制器,该控制器包含一系列动作用于执行备份操作。这些动作可以调用系统的shell命令(如mysqldump)或者使用PHP的PDO扩展来执行SQL查询以创建SQL备份文件。 ...

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

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

    Yii数据库缓存实例分析

    本文将详细介绍Yii数据库缓存的用法,并结合代码实例进行分析。 首先,我们来了解一下Yii缓存组件的基本操作,包括设置缓存、获取缓存、删除缓存和清除缓存。 在Yii中,使用缓存主要通过`Yii::app()->cache`对象来...

    yii数据库的查询方法

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

    Yii操作数据库的3种方法

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

    YII 数据库操作之 Active Record

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

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

    1. 使用第三方组件或中间件,如MyCAT、Sharding-JDBC等,这些组件可以代理数据库连接,从而实现读写分离。 2. 自己编写读写分离逻辑,例如在YII2应用中,可以自定义组件来实现数据库连接的读写分离,通过配置不同的...

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

    本文将详细探讨如何在 Yii2 命令行环境中使用 migration 来实现数据库的备份与还原。 首先,我们需要了解什么是 `migration`。在软件开发过程中,随着应用需求的变化,数据库结构可能需要进行调整。Migration 就是...

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

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

    Yii2框架实现数据库常用操作总结

    Yii2框架中的ActiveRecord是一种模式,它提供了一个面向对象的接口来操作数据库中的数据。每一个AR类都关联着一张数据表,每一条AR记录对应表中的一行数据。开发者可以直接通过AR对象的属性来访问或修改对应的列值。...

    微服务之数据库服务-客户端(PHP+YII)

    对于需要跨多个数据库操作的情况,YII支持事务管理,可以确保原子性和一致性。 此外,考虑到微服务的可扩展性和容错性,可能需要实现数据库连接池和故障切换机制。在PHP中,可以使用第三方库如predis来实现Redis...

    Yii2数据库操作常用方法小结

    Yii2是使用PHP开发的现代Web应用程序框架,它拥有快速、安全和可扩展的特点。Yii2框架简化了许多Web开发任务,包括数据库操作。...开发者在使用Yii2进行Web开发时,可以通过这些数据库操作方法快速地开发功能模块。

Global site tag (gtag.js) - Google Analytics