首頁 php教程 php手册 Yii framwork crud 命名范围NAMED SCOPE

Yii framwork crud 命名范围NAMED SCOPE

Jun 13, 2016 am 10:55 AM
1 crud Note yii 命名 支援 版本 範圍

命名范围
Note: 对命名范围的支持从版本 1.0.5 开始。 命名范围的最初想法来源于 Ruby on Rails.
命名范围(named scope) 表示一个 命名的(named)查询规则,它可以和其他命名范围联合使用并应用于 Active Record 查询
命名范围主要是在 CActiveRecord::scopes() 方法中以名字-规则对的方式声明。如下代码在 Post 模型类中声明了两个命名范围,
published 和 recently。
class Post extends CActiveRecord
{
    ......
    public function scopes()
    {
        return array(
            'published'=>array(
                'condition'=>'status=1',
            ),
            'recently'=>array(
                'order'=>'create_time DESC',
                'limit'=>5,
            ),
        );
    }
}
具体使用:  $posts=Post::model()->published()->recently()->findAll();
注意: 命名范围只能用于类级别方法。也就是说,此方法必须使用 ClassName::model() 调用。

参数化的命名范围
命名范围可以参数化。例如, 我们想自定义 recently 命名范围中指定的帖子数量,要实现此目的,不是在CActiveRecord::scopes
方法中声明命名范围, 而是需要定义一个名字和此命名范围的名字相同的方法:
public function recently($limit=5)
{
    $this->getDbCriteria()->mergeWith(array(
        'order'=>'create_time DESC',
        'limit'=>$limit,
    ));
    return $this;
}
然后,我们就可以使用如下语句获取3条最近发布的帖子。
$posts=Post::model()->published()->recently(3)->findAll();//上面的代码中,默认获取 5 条最近发布的帖子。

默认范围
模型类可以有一个默认范围,它将应用于所有 (包括相关的那些) 关于此模型的查询。例如,一个支持多种语言的网站可能只想显
示当前用户所指定的语言的内容。 因为可能会有很多关于此网站内容的查询, 我们可以定义一个默认范围以解决此问题。 为实
现此目的,我们覆盖 CActiveRecord::defaultScope 方法如下:
class Content extends CActiveRecord
{
    public function defaultScope()
    {
        return array(
            'condition'=>"language='".Yii::app()->language."'",
        );
    }
}

现在,如果下面的方法被调用,将会自动使用上面定义的查询规则:$contents=Content::model()->findAll();

 


实际应用
上面的是几个官方给出的例子,下面是我自己使用的例子供大家参考一下:

TABLE:
school:id(pk,int),name(varchar)  //学校
class:id(pk,int),name(varchar),s_id(fk,int)  //班级
student:id(pk,int),name(varchar),s_id(int),c_id(int)  //学生

例子:查询为学校为“a"的,所有班级,这时我们可以先在School模型中的relations方法中定义一个关系方便调用
public function relations() 

    return array( 
        'class'=>array(self::HAS_MANY, 'Class', 's_id'), 
    ); 
}
public function scopes()
{
    return array(
        'getAllClass'=>array(
            'with'=>'class',
        ),
    };
}
public function getAllClass($name)
{
    $this->getDbCriteria()->mergeWith(array(
        'condition'=>"t.name=$name",
    ));
    return $this;

}

使用:School::model()->getAllClass("a")->findAll();

 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1319
25
PHP教程
1269
29
C# 教程
1248
24
大模型一對一戰鬥75萬輪,GPT-4奪冠,Llama 3位列第五 大模型一對一戰鬥75萬輪,GPT-4奪冠,Llama 3位列第五 Apr 23, 2024 pm 03:28 PM

關於Llama3,又有測試結果新鮮出爐-大模型評測社群LMSYS發布了一份大模型排行榜單,Llama3位列第五,英文單項與GPT-4並列第一。圖片不同於其他Benchmark,這份榜單的依據是模型一對一battle,由全網測評者自行命題並評分。最終,Llama3取得了榜單中的第五名,排在前面的是GPT-4的三個不同版本,以及Claude3超大杯Opus。而在英文單項榜單中,Llama3反超了Claude,與GPT-4打成了平手。對於這一結果,Meta的首席科學家LeCun十分高興,轉發了推文並

查看麒麟作業系統版本和核心版本 查看麒麟作業系統版本和核心版本 Feb 21, 2024 pm 07:04 PM

查看麒麟作業系統版本和核心版本在麒麟作業系統中,了解如何檢視系統版本和核心版本是進行系統管理和維護的基礎。查看麒麟作業系統版本方法一:使用/etc/.kyinfo檔案要查看麒麟作業系統的版本,您可以檢視/etc/.kyinfo檔案。此檔案包含了作業系統的版本資訊。執行以下指令:cat/etc/.kyinfo此指令將顯示作業系統的詳細版本資訊。方法二:使用/etc/issue檔案另一個檢視作業系統版本的方法是透過檢視/etc/issue檔案。這個文件同樣提供了版本信息,但可能不如.kyinfo文件

Linux下更新curl版本教程! Linux下更新curl版本教程! Mar 07, 2024 am 08:30 AM

在Linux下更新curl版本,您可以按照以下步驟進行操作:檢查目前curl版本:首先,您需要確定目前系統中安裝的curl版本。開啟終端,並執行以下指令:curl--version該指令將顯示目前curl的版本資訊。確認可用的curl版本:在更新curl之前,您需要確定可用的最新版本。您可以造訪curl的官方網站(curl.haxx.se)或相關的軟體來源,尋找最新版本的curl。下載curl原始碼:使用curl或瀏覽器,下載您選擇的curl版本的原始碼檔案(通常為.tar.gz或.tar.bz2

dp介面怎麼看1.2還是1.4 dp介面怎麼看1.2還是1.4 Feb 06, 2024 am 10:27 AM

DP介面是電腦裡面重要的介面線,有很多使用者在使用電腦的時候,想要知道怎麼樣可以查看DP介面是1.2還是1.4的,其實只需要在GPU-Z中就可以看。 dp介面怎麼看1.2還是1.4:1、先在GPU-Z中選擇「Advanced」。 2.再看“Advanced”下面“General”中的“Monitor1”,可以看“LinkRate(current)”和“Lanes(current)”這兩項。 3.最後如果顯示8.1Gbps×4,就是DP1.3版本以上,一般都是DP1.4,如果是5.4Gbps×4,則

如何輕鬆查看Oracle的安裝版本 如何輕鬆查看Oracle的安裝版本 Mar 07, 2024 am 11:27 AM

如何輕鬆查看Oracle的安裝版本,需要具體程式碼範例作為一款被廣泛應用於企業級資料庫管理系統的軟體,Oracle資料庫具有許多版本和不同的安裝方式。在日常工作中,我們經常需要查看Oracle資料庫的安裝版本,以便進行相應的操作和維護。本文將介紹如何輕鬆查看Oracle的安裝版本,並給出具體的程式碼範例。方法一:透過SQL查詢在Oracle資料庫中,我們可以通

解讀PHP版本NTS的意思與差異 解讀PHP版本NTS的意思與差異 Mar 27, 2024 am 11:48 AM

PHP版本NTS的意思與差異PHP是一種流行的伺服器端腳本語言,廣泛應用於Web開發領域。 PHP有兩個主要的版本:ThreadSafe(TS)和Non-ThreadSafe(NTS)。在PHP的官方網站上,我們可以看到兩個不同的PHP下載版本,分別是PHPNTS和PHPTS。那麼,PHP版本NTS是什麼意思呢?它和TS版本有什麼差別呢?接下來,

抖音怎麼看版本 抖音怎麼看版本 Apr 15, 2024 pm 12:06 PM

1.開啟抖音app,點選右下角的【我】,進入個人頁面。 2.點選右上角的【三條槓】圖標,在彈出的選單列中選擇【設定】選項。 3.在設定頁中,下滑至底部,即可查看目前抖音的版本號資訊。

優缺點分析:深入了解開源軟體的優缺點 優缺點分析:深入了解開源軟體的優缺點 Feb 23, 2024 pm 11:00 PM

開源軟體的利與弊:了解開源專案的優劣勢,需要具體程式碼範例在當今數位化時代,開源軟體越來越受到關注和推崇。作為一種基於合作和分享精神的軟體開發模式,開源軟體在不同領域都有廣泛的應用。然而,儘管開源軟體具有諸多優勢,但也存在一些挑戰和限制。本文將深入探討開源軟體的利與弊,並透過具體的程式碼範例展示開源專案的優劣勢。一、開源軟體的優勢1.1開放性與透明性開源軟體

See all articles