摘要:根據條件查詢一個集合根據主鍵查詢一個集合可以使用多個主鍵根據條件查詢一個集合可以是多個條件把條件放到數組里面根據語句查詢一個數組根據主鍵查詢出一個對象根據條件查詢出一組數據可能是多個但是他只返回第一行數據根據
1、根據條件查詢一個集合
$objectResult=Post::model()->findAll($condition,$params); $oClasses = classes::model()->findAll(array( "select"=>"classId,className,grade,type,status", "condition"=>"classId=21 and grade=1", "order"=>"createtime desc", )); $objectResult=Post::model()->findAll("username=:name",array(":name"=>$username)); $objectResult=RepairItem::model()->findAll("orderno=:orderno and orderpostid=:orderpostid",array(":orderno"=>$orderInfo["orderno"],":orderpostid"=>$orderInfo["orderpostid"])); $infoArr = NewsList::model()->findAll("status = "1" ORDER BY postid DESC limit 10 ");
2、根據主鍵查詢一個集合,可以使用多個主鍵 findAllByPk
$objectResult=Post::model()->findAllByPk($postIDs,$condition,$params); $objectResult=Post::model()->findAllByPk($postid,"name like :name and age=:age",array(":name"=>$name,"age"=>$age)); $objectResult=Post::model()->findAllByPk(array(1,2));
3、根據條件查詢一個集合,可以是多個條件,把條件放到數組里面 findAllByAttributes
$objectResult=Post::model()->findAllByAttributes($attributes,$condition,$params); $objectResult=Post::model()->findAllByAttributes(array("username"=>"jack"));
4、根據SQL語句查詢一個數組 findAllBySql
$arrResult=Post::model()->findAllBySql($sql,$params); $arrResult=Post::model()->findAllBySql("select * from tbl_post where username like :name",array(":name"=>"?%"));
5、根據主鍵查詢出一個對象 eg:findByPk(1);
$arrResult=Post::model()->findByPk($postID,$condition,$params); $arrResult=Post::model()->findByPk(1);
6、根據條件查詢出一組數據,【可能是多個,但是他只返回第一行數據】
$arrRow=Post::model()->find($condition,$params); $arrRow=Post::model()->find("username=:name",array(":name"=>"jack"));
7、根據條件查詢一組數據,【可以是多個條件,把條件放到數組里面,查詢的也是第一條數據】
$objectResult=Post::model()->findByAttributes($attributes,$condition,$params); $objectResult=Post::model()->findByAttributes(array("username"=>"objectResult"));
8、根據SQL語句查詢一組數據,【查詢的也是第一條數據】
$objectResult=Post::model()->findBySql($sql,$params); $objectResult=Post::model()->findBySql("select * from objectResult where username=:name",array(":name"=>"objectResult"));
9、通過CDbCriteria類find查詢出一個對象
$criteria=new CDbCriteria; $criteria->select="username"; // 限制顯示哪些字段 $criteria->condition="username=:username"; //一個查詢條件用aCondition.多條件用addCondition $criteria->params=array(":username=>"jack""); $criteria->order = "postsort DESC"; $criteria->limit = "3"; $post=Post::model()->find($criteria);
10、多條件查詢的語句
$criteria = new CDbCriteria; $criteria->addCondition("postid=1"); //等同于 where postid = 1 $criteria->addInCondition("postid", array(1,2,3,4,5)); //等同于 where postid IN (1,2,3,4,5,); $criteria->addNotInCondition("postid", array(1,2,3,4,5));//等同于 NOT IN (1,2,3,4,5,) $criteria->addCondition("postid=1","OR");//等同于 OR而非AND $criteria->addSearchCondition("username", "jack");//等同于 where name like "%jack%" $criteria->addBetweenCondition("postid", 1, 4);// 等同于 between 1 and 4 $criteria->compare("postid", 1); //根據你的參數自動處理成addCondition或者addInCondition. $criteria->compare("postid", array(1,2,3)); //數組就會調用addInCondition $criteria->select = "postid,parentid,name"; //限制顯示哪些字段 $criteria->join = "xxx"; //連接表 $criteria->with = "xxx"; //調用relations $criteria->limit = 10; //取1條數據,如果小于0,則不作處理 $criteria->offset = 1; //兩條合并起來,則表示 limit 10 offset 1,或者代表了。limit 1,10 $criteria->order = "xxx DESC,XXX ASC" ;//排序條件 $criteria->group = "group 條件"; $criteria->having = "having 條件 "; $criteria->distinct = FALSE; //是否唯一查詢
三、查詢個數,判斷查詢是否有結果
根據一個條件查詢一個集合有多少條記錄,返回一個int型數字
$intCount=Post::model()->count($condition,$params); $intCount=Post::model()->count("username=:name",array(":name"=>$username));
根據SQL語句查詢一個集合有多少條記錄,返回一個int型數字
$intCount=Post::model()->countBySql($sql,$params); $intCount=Post::model()->countBySql("select * from objectResult where username=:name",array(":name"=>"objectResult"));
根據一個條件查詢查詢得到的數組有沒有數據,有數據返回一個true,否則沒有找到
$boolExists=Post::model()->exists($condition,$params); $boolExist=Post::model()->exists("name=:name",array(":name"=>$username));
四、添加的方法
$objectPost = new Post; $objectPost->username = $username; $objectPost->password = $password;
或許
$objectPost->attributes = $arrNewData; if($objectPost->save()){ $intPostId= $objectPost->primaryKey; //生成主鍵id echo "添加成功"; }else{ echo "添加失敗"; }
五、修改的方法
Post::model()->updateAll($attributes,$condition,$params); $count =Post::model()->updateAll(array("username"=>"11111","password"=>"11111"),"password=:pass",array(":pass"=>"1111a1")); if($count > 0){ echo "修改成功"; }else{ echo "修改失敗"; } $rt = PostList::model()->updateAll(array("status"=>"1"),"staff_postid=:staff AND host_postid=:host",array(":staff"=>$staff_postid,":host"=>$host_postid)); Post::model()->updateByPk($pk,$attributes,$condition,$params); $count=Post::model()->updateByPk(1,array("username"=>"jack","password"=>"jack")); $count=Post::model()->updateByPk(array(1,2),array("username"=>"jack1","password"=>"jack1"),"username=:name",array(":name"=>"jack")); if($count > 0){ echo "修改成功"; }else{ echo "修改失敗"; } Post::model()->updateCounters($counters,$condition,$params); $count=Post::model()->updateCounters(array("status"=>1),"username=:name",array(":name"=>"jack")); if($count > 0){ echo "修改成功"; }else{ echo "修改失敗"; } //array("status"=>1)代表數據庫中的post表根據條件username="jack",查詢出的所有結果status字段都自加1
六、刪除的方法
//deleteAll Post::model()->deleteAll($condition,$params); $count = Post::model()->deleteAll("username=:name and password=:pass",array(":name"=>"jack",":pass"=>"jack")); $count = Post::model()->deleteAll("postid in("1,2,3")");//刪除postid為這些的數據 if($count>0){ echo "刪除成功"; }else{ echo "刪除失敗"; } //deleteByPk Post::model()->deleteByPk($pk,$condition,$params); $count = Post::model()->deleteByPk(1); $count =Post::model()->deleteByPk(array(1,2),"username=:name",array(":name"=>"jack")); if($count>0){ echo "刪除成功"; }else{ echo "刪除失敗"; }}
七、執行原生的SQL語句
$sql = "select t.*, t1.userphone, t1.truename, t1.usermail from {{member_contact}} t left join {{member}} t1 on t.userid = t1.userid where t.contactid in (1,2,3)"; $arrRows=Yii::app()->db->createCommand($sql)->query(); foreach ($arrRows as $k => $v){ }
八、事務處理 【多表更新插入操作請使用事務處理】
$transaction = Yii::app()->db->beginTransaction(); try{ $arrOrderProfile = array( "orderid" => $orderId, "userip" => $userip, "contactid" => $contactId, "updatetime"=> $now ); $modelOrderProfile = new RepairOrderProfile(); $modelOrderProfile->attributes = $arrOrderProfile; if(!$modelOrderProfile->save()){ throw new CException("維修訂單生成失敗,通知事務回滾"); } $recordCounter = Counter::model()->updateByPk(1,array("max_id"=>$orderId)); if($recordCounter <= 0 ) throw new CException("訂單計數器更新失敗,通知事務回滾"); $transaction->commit(); //提交事務會真正的執行數據庫操作 }catch(Exception $e){ file_put_contents("action.log", $e->getCode().":".$e->getMessage()."--".date("Y-m-d H:i:s",time()),FILE_APPEND); $transaction->rollback(); }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/28773.html
摘要:也提供了命名查詢的方式,比如需要獲取最近一個月內發布的篇文章,如果經常性的用到這個查詢,可以使用命名查詢的方式來寫。 這兩天用YII開發了用戶管理的功能,以前雖然也用YII框架開發過一些功能,但是總感覺對YII的使用還不是很熟練。 這次真正動手之前,先復習了一遍 yii-guide-1.1.14.pdf 這本書,上次看的時候太過于粗略了,這次仔仔細細的閱讀了一遍。 說一下最直觀的感受 ...
摘要:建立關聯關系后,通過可以獲取一個對象的數組,該數組代表當前客戶對象的訂單集。定義關聯關系使用一個可以返回對象的方法,對象有關聯上下文的相關信息,因此可以只查詢關聯數據。基于表外鍵定義關聯關系是最佳方法。 簡介 Yii 在操作數據庫方面提供了一個十分強大的類庫來支撐整個框架業務的運轉,這就是 Active Record (活動記錄,以下簡稱AR)。 基本概念 AR類提供了一個面向對象的接...
摘要:今天把這個問題講明白了,看看是怎么個多表關聯以及如何去優化這個關聯。現需要在列表展示表的來源渠道,且該渠道可搜索。關聯表字段增加查詢中的搜索模型也是通過實現的,該模型通過控制著哪個字段可搜索,哪個字段不可搜索。 作者:白狼 出處:http://www.manks.top/yii2_many_ar_relation_search.html 本文版權歸作者,歡迎轉載,但未經作者同意必須保留...
摘要:極致的插件機制,系統內的系統,安裝和卸載不會對原來的系統產生影響強大的功能完全滿足各階段的需求,支持用戶多端訪問后臺微信前臺等,系統中的系統。多入口模式,多入口分為后臺前端,微信,對內接口,對外接口,不同的業務,不同的設備,進入不同的入口。 RageFrame 2.0 為二次開發而生,讓開發變得更簡單 項目地址:https://github.com/jianyan74/... 前言 這...
閱讀 1674·2021-10-13 09:39
閱讀 2104·2021-09-07 10:20
閱讀 2686·2019-08-30 15:56
閱讀 2955·2019-08-30 15:56
閱讀 938·2019-08-30 15:55
閱讀 632·2019-08-30 15:46
閱讀 3502·2019-08-30 15:44
閱讀 2561·2019-08-30 11:15