国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

Yii框架中 find findAll 查找出制定的字段的方法對比

2024-05-04 23:25:42
字體:
來源:轉載
供稿:網友
在yii框架中可以使用映射類的find方法取出一條數據或者用findall方法取出數條數據來,那么如何按照所需條件來取數據呢,主要用到了CDbCriteria這個類,這個類是yii自帶的操作數據庫的支持類
 
 

 

眾所周知

modelName::model() -> find()    //找出的是一個對象
modelName::model() -> findALL()  //找出的是一個對象集合的數組
如何找出我所需要的字段的數據,而不是全部字段的數據

之前我是這么做的

$criteria = new CDbCriteria;$criteria->select = 'username,id,email';$criteria->order = 'id DESC';$users = modelName::model()->findAll( $criteria );

后臺無意中看到別人有這么寫的,發現自己是多么的無知

$users = modelName::model()->findAll(array(  'select' =>array('username','id','email'),  'order' => 'id DESC', ));

測試后發現果然可以用,那么find也可以這么操作

$user = modelName::model()->find(array(  'select' =>array('username','id','email'),  'order' => 'id DESC',  'condition' => 'id='.$id,));

當然了,這么做肯定不安全了,換成下面的方法同樣可以

$users = $this->user->find(array(  'select'=>array('id','username','email'),  'order' => 'id DESC',  'condition' => 'state=:state AND id=:id',  'params' => array(':state'=>'1',':id' => '2'),));

同理用findAll測試了也可以,結論

通過這種方法能夠很方便的獲取所需要的數據,當然需要分頁的時候還是 需要 new 以下 CDbCriteria 的

比如我要取出videoinfo表中的'v_id','title','big_class','sub_class','upload_time','comment_num' 等字段,且條件是status=1的,按照lastmodifytime倒序,且只取出3條即可,這樣操作:

$criteria = new CDbCriteria() ; $criteria -> select = array('v_id','title','big_class','sub_class','upload_time','comment_num');     $criteria -> condition = 'status = 1'; $criteria -> order = 'lastmodifytime desc'; $criteria -> limit = 3;  $criteria ->params = array (':status' => $你的變量) ; $result = VideoInfo::model()->findAll($criteria); 

其中我注釋掉的那一行是可以傳變量的,用占位符表示,比如你的status需要按照變量來條件賦值的話,可以在注釋的那行賦值,然后在condition條件寫成

$criteria -> condition = 'status = :status'; 

即可,
這樣,$result變量時你取得的結果,它是個對象列表,需要遍歷一下:

foreach ($result as $ob){       print_r($ob->attributes);  } 

比如你想展示每個字段只需打出

$ob->attributes['title']; 

等等即可

領完,CPagination類可以和CDbCriteria類以及前臺的分頁插件一起用來支持分頁:

      $count =VideoInfo::model()->count($criteria)      $pages=new CPagination($count);          $pages->pageSize=30; //每頁分多少條      $pages->applyLimit($criteria); 
$result = VideoInfo::model()->findAll($criteria); 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临桂县| 浦北县| 神木县| 宽甸| 广河县| 兴安县| 南投市| 康保县| 长垣县| 庄浪县| 南木林县| 广元市| 阳江市| 寿宁县| 秦皇岛市| 凤阳县| 镇沅| 读书| 西平县| 班玛县| 五大连池市| 鞍山市| 奉节县| 贵港市| 汕头市| 临城县| 梅河口市| 博兴县| 辰溪县| 九龙城区| 临汾市| 喜德县| 子洲县| 浪卡子县| 郑州市| 涪陵区| 郧西县| 张家港市| 固原市| 雷山县| 河曲县|