Yii 1.x 的 Active Record 提供兩種等價的查詢構建方式:參數數組與 CDbCriteria 對象。
$arr = [
'select' => 'username,password,email',
'condition' => "username LIKE '%6'",
'order' => 'id DESC',
'limit' => 5,
'offset' => 1,
];
$info = User::model()->findAll($arr);
$criteria = new CDbCriteria();
$criteria->select = 'username,password,email';
$criteria->condition = "username LIKE '%1'";
$criteria->limit = 5;
$criteria->order = 'id DESC';
$criteria->offset = 1;
$info = User::model()->findAll($criteria);
'condition' => 'status=:status', 'params' => [':status'=>1] 防止 SQL 注入。$criteria->with = ['profile', 'posts'] 急加載關聯表。$criteria->group = 'category_id'; $criteria->select = 'category_id, COUNT(*) as cnt'。| 方法 | 說明 |
|---|---|
find() | 返回單個模型實例(首條) |
findAll() | 返回模型實例數組 |
findByPk() | 按主鍵查單條 |
findAllByPk() | 按主鍵數組查多條 |
findByAttributes() | 按屬性數組查單條 |
findAllByAttributes() | 按屬性數組查多條 |
findBySql() | 原生 SQL 查單條 |
findAllBySql() | 原生 SQL 查多條 |
count() | 統計符合條件記錄數 |
exists() | 判斷是否存在記錄 |
CDbCriteria,便於動態構建複雜條件。params 綁定,杜絕拼接 SQL。limit、index 優化。