摘要:因為剛開始學習框架的時候使用的是,后來開始接觸的時候各種不熟悉,只能是各種百度,因為自己英語很弱,花了不少時間。
因為剛開始學習php 框架的時候使用的是 CI,后來開始接觸 Yii 的時候各種不熟悉,只能是各種百度,因為自己英語很弱,花了不少時間。
如果英文不錯,可以直接看原文地址 http://www.yiiframework.com/doc/guide/1.1/en/database.ar
一、對于一個 Model News 有如下的很多種中查詢方法,如下返回對象或者對象數組:$post=News::model()->find($condition,$params); // 通過指定的條件進行查詢 $post=News::model()->findByPk($postID,$condition,$params); // 通過news表的primary key 進行查詢 $post=News::model()->findByAttributes($attributes,$condition,$params); // 通過指定關鍵值繼續查詢 $post=News::model()->findBySql($sql,$params); // 通過sql語句進行查詢
下面我們來看 find() 方法:
比如我們要查詢 nid 為5的那條數據
$post=News::model()->find("nid=:newsID", array(":newsID"=>5));
條件 $condition 就是我們 sql 里的 where 部分,參數通過 params 傳遞, 注意名字前面是加了" : "的。
在Yii中我們還可以使用CDbCriteria類來構造查詢,如果我們查詢nid為5的title值,CdbCriteria是這樣構造的:
$criteria = new CDbCriteria; $criteria->select="title"; // 只查詢出相應的 title 字段,不要這句話講返回整條數據 $criteria->condition="nid=:newsID"; $criteria->params=array(":newsID"=>5); $news = News::model()->find($criteria); // $params不是必須的
還有也可以寫成一下方式:
$news = News::model()->find(array( "select"=>"title", "condition"=>"nid=:newsID", "params"=>array(":newsID"=>5), ));
下面我們來看 findByAttributes() 方法,返回一條記錄:
News::model()->findByAttributes(array("title"=>"abc"));
參數就是一個鍵值對的數組。
還有其他的一些方法:
$admin=Admin::model()->findAll($condition,$params);
該方法是根據一個條件查詢出集合,如:
findAll("username=:name",array(":name"=>$username));
通過主鍵查詢:
$admin=Admin::model()->findAllByPk($postIDs,$condition,$params); findAllByPk($id,"name like ":name" and age=:age" ,array(":name"=>$name,"age"=>$age));
該方法是根據主鍵查詢一個集合,可以使用多個主鍵,如: findAllByPk(array(1,2));
查詢所有滿足條件的集合:
$admin=Admin::model()->findAllByAttributes($attributes,$condition,$params);
該方法是根據條件查詢一個集合,可以是多個條件,把條件放到數組里面,根據屬性來查詢,就像sql的where里的多個and如: findAllByAttributes(array("username"=>"admin"));
SELECT * from one_table where username = "admin" and password ="123456";對應的AR model查詢如下
Admin::model()->findAllByAttributes(array("username"=>"admin", "password"=>"123456"));
通過SQL語句查詢所有滿足條件的結果
$admin=Admin::model()->findAllBySql($sql,$params);
該方法是根據SQL語句查詢一個數組,如:
findAllBySql("select *from admin where username=:name",array(":name"=>"admin"));
通過SQL語句查詢一條滿足條件的結果
$admin=Admin::model()->findBySql($sql,$params);
該方法是根據SQL語句查詢一個數組,如:
findBySql("select *from admin where username=:name",array(":name"=>"admin"));二、查詢個數,判斷查詢是否有結果
1.該方法是根據條件查詢一個集合有多少條記錄,返回一個int型數字,如
$n=Post::model()->count($condition,$params); count("username=:name",array(":name"=>$username));
2、該方法是根據SQL語句查詢一個集合有多少條記錄,返回一個int型數字,如
$n=Post::model()->countBySql($sql,$params); countBySql("select *from admin where username=:name",array(":name"=>"admin"));
3、該方法是根據一個條件查詢查詢得到的數組有沒有數據,如果有數據返回一個true,否則沒有找到:
$exists=Post::model()->exists($condition,$params);三、添加的方法
$admin=new Admin; $admin->username=$username; $admin->password=$password; if($admin->save()>0){ echo "添加成功"; }else{ echo "添加失敗"; }四、修改的方法
1、updateAll()
Post::model()->updateAll($attributes,$condition,$params); $count = Admin::model()->updateAll(array("username"=>"11111","password"=>"11111"),"password=:pass",array(":pass"=>"1111a1")); if($count>0){ echo "修改成功"; }else{ echo "修改失敗"; }
2、updateByPk()
Post::model()->updateByPk($pk,$attributes,$condition,$params); // $count = Admin::model()->updateByPk(1,array("username"=>"admin","password"=>"admin")); $count = Admin::model()->updateByPk(array(1,2),array("username"=>"admin","password"=>"admin"),"username=:name",array(":name"=>"admin")); if($count>0){ echo "修改成功"; }else{ echo "修改失敗"; }
$pk代表主鍵,可以是一個也可以是一個集合,$attributes代表是要修改的字段的集合,$condition代表條件,$params傳入的值
3、updateCounters()
Post::model()->updateCounters($counters,$condition,$params); $count =Admin::model()->updateCounters(array("status"=>1),"username=:name",array(":name"=>"admin")); if($count>0){ echo "修改成功"; }else{ echo "修改失敗"; }
array("status"=>1)代表數據庫中的admin表根據條件username="admin",查詢出的所有結果status字段都自加1
五、刪除的方法1、deleteAll()
Post::model()->deleteAll($condition,$params); $count = Admin::model()->deleteAll("username=:name and password=:pass",array(":name"=>"admin",":pass"=>"admin")); $id=1,2,3; deleteAll("id in(".$id.")"); // 刪除id為這些的數據 if($count>0){ echo "刪除成功"; }else{ echo "刪除失敗"; }
2、deleteByPk()
Post::model()->deleteByPk($pk,$condition,$params); // $count = Admin::model()->deleteByPk(1); $count = Admin::model()->deleteByPk(array(1,2),"username=:name",array(":name"=>"admin")); if($count>0){ echo "刪除成功"; }else{ echo "刪除失敗"; }
Yii AR還有更多的簡便操作,大家可以在使用中慢慢體會。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30260.html
摘要:也提供了命名查詢的方式,比如需要獲取最近一個月內發布的篇文章,如果經常性的用到這個查詢,可以使用命名查詢的方式來寫。 這兩天用YII開發了用戶管理的功能,以前雖然也用YII框架開發過一些功能,但是總感覺對YII的使用還不是很熟練。 這次真正動手之前,先復習了一遍 yii-guide-1.1.14.pdf 這本書,上次看的時候太過于粗略了,這次仔仔細細的閱讀了一遍。 說一下最直觀的感受 ...
摘要:建立關聯關系后,通過可以獲取一個對象的數組,該數組代表當前客戶對象的訂單集。定義關聯關系使用一個可以返回對象的方法,對象有關聯上下文的相關信息,因此可以只查詢關聯數據。基于表外鍵定義關聯關系是最佳方法。 簡介 Yii 在操作數據庫方面提供了一個十分強大的類庫來支撐整個框架業務的運轉,這就是 Active Record (活動記錄,以下簡稱AR)。 基本概念 AR類提供了一個面向對象的接...
摘要:好啦,我們看看在框架的不同版本中是怎么處理攻擊,注入等問題的。那要是,又是怎樣處理的喃考慮目前國內網站大部分采集文章十分頻繁,更有甚者不注明原文出處,原作者更希望看客們查看原文,以防有任何問題不能更新所有文章,避免誤導繼續閱讀 作者:白狼 出處:http://www.manks.top/yii2_filter_xss_code_or_safe_to_database.html 本文版權...
摘要:業務代碼風格的幾個建議關于循環體內重復調用的問題代碼示例是一個可能超出個數據的大變量以上代碼塊是有非常嚴重問題的。所以,業務代碼應盡量避免使用類似代碼。建議每個方法的代碼不超過行,除非情況特殊。 業務代碼風格的幾個建議 關于循環體內重復調用的問題 代碼示例: // $array是一個可能超出1000個數據的大變量 foreach ($array as $ar) { $mod...
閱讀 1917·2021-11-23 09:51
閱讀 1246·2019-08-30 15:55
閱讀 1613·2019-08-30 15:44
閱讀 759·2019-08-30 14:11
閱讀 1146·2019-08-30 14:10
閱讀 916·2019-08-30 13:52
閱讀 2630·2019-08-30 12:50
閱讀 615·2019-08-29 15:04