程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> Yii使用find findAll查找出指定字段的實現方法,yiifindall

Yii使用find findAll查找出指定字段的實現方法,yiifindall

編輯:關於PHP編程

Yii使用find findAll查找出指定字段的實現方法,yiifindall


本文以實例形式展示了Yii使用find findAll查找出指定字段的實現方法,分享給大家供大家參考之用。具體方法如下:

總所周知,采用如下方法:

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 的。

希望本文所述對大家采用Yii進行數據庫程序設計能有所幫助。


c# 中Find與FindAll用法的不同?

獲取你需要的數據 下面是Model中一些獲取你需要的數據的標准方法: findAll string $conditions array $fields string $order int $limit int $page int $recursive [$conditions Type: string] 檢索條件,就是sql中where子句,就像這樣 $conditions = "race = 'wookie' AND thermal_detonators > 3"。 [$fields Type: array] 檢索屬性,就是投影,指定所有你希望返回的屬性。 (譯注:這裡我沒有使用字段這個親SQL的名字而是用了屬性這個親對象的名字,我相信很多PHPer更熟悉基於Sql和DTO的開發模式,但是引入Model的一個初衷就是將關系數據庫轉換為對象操作,所以投影查詢應該理解為檢索對象的某些屬性) [$order Type: string] 排序屬性 指定了oder by的屬性名 [TODO:check whether the multiple order field be supported] [$limit Type: int] 結果集數據條目限制 [$page Type: int] 結果集分頁index,默認為返回第一頁 [$recursive Type: int] 遞歸 當設為大於1的整數時,將返回該model關聯的其他對象。(譯注:如果你使用過類似於Hibernate這樣的ORM工具的話,不難理解這個屬性就是LazyLoad屬性,但也不完全等同,數字的值代表級聯查詢的層次數,例如這樣,user.country.city.address.id) find string $conditions array $fields string $order int $recursive find方法和findAll方法的區別在於,findAll方法返回所有符合的結果集,find方法只返回list中的第一個結果。
 

Yii在什情況下可以直接用find()->attributes來獲取查詢的字段?

前提是要在數據庫對應的實體文件中定義該屬性。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved