yii 數據庫 Active Record

// 查找知足指定條件的結果中的第一行
$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);
相關文章
相關標籤/搜索