// 查找知足指定條件的結果中的第一行 $post=Post::model()->find($condition,$params); // 查找具備指定主鍵值的那一行 $post=Post::model()->findByPk($postID,$condition,$params); // 查找具備指定屬性值的行 $post=Post::model()->findByAttributes($attributes,$condition,$params); // 經過指定的 SQL 語句查找結果中的第一行 $post=Post::model()->findBySql($sql,$params);
$criteria=new CDbCriteria; $criteria->select='title'; // 只選擇 'title' 列 $criteria->condition='postID=:postID'; $criteria->params=array(':postID'=>10); $post=Post::model()->find($criteria); // $params 不須要了
$post=Post::model()->find(array( 'select'=>'title', 'condition'=>'postID=:postID', 'params'=>array(':postID'=>10), ));
信息: 當一個查詢條件是關於按指定的值匹配幾個列時,咱們可使用 findByAttributes()。咱們使
$attributes
參數是一個以列名作索引的值的數組。在一些框架中,此任務能夠經過調用相似findByNameAndTitle
的方法實現。雖然此方法看起來很誘人, 但它經常引發混淆,衝突和好比列名大小寫敏感的問題。php
當有多行數據匹配指定的查詢條件時,咱們能夠經過下面的 findAll
方法將他們所有帶回。 每一個都有其各自的 find
方法,就像咱們已經講過的那樣。sql
// 查找知足指定條件的全部行 $posts=Post::model()->findAll($condition,$params); // 查找帶有指定主鍵的全部行 $posts=Post::model()->findAllByPk($postIDs,$condition,$params); // 查找帶有指定屬性值的全部行 $posts=Post::model()->findAllByAttributes($attributes,$condition,$params); // 經過指定的SQL語句查找全部行 $posts=Post::model()->findAllBySql($sql,$params);
若是沒有任何東西符合查詢條件, 將返回一個空數組。這跟 不一樣, 會在沒有找到什麼東西時返回 null。
findAllfindfind
除了上面講述的 和 方法,爲了方便,(Yii)還提供了以下方法:findfindAll
// 獲取知足指定條件的行數 $n=Post::model()->count($condition,$params); // 經過指定的 SQL 獲取結果行數 $n=Post::model()->countBySql($sql,$params); // 檢查是否至少有一行復合指定的條件 $exists=Post::model()->exists($condition,$params);