首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Yii 1.x 數據庫查詢:findAll 參數數組與 CDbCriteria 兩種寫法

     編輯:PHP 相關知識

兩種主流查詢風格

Yii 1.x 的 Active Record 提供兩種等價的查詢構建方式:參數數組與 CDbCriteria 對象。

1. 參數數組寫法(簡潔)

$arr = [
    'select'  => 'username,password,email',
    'condition' => "username LIKE '%6'",
    'order'   => 'id DESC',
    'limit'   => 5,
    'offset'  => 1,
];
$info = User::model()->findAll($arr);

2. CDbCriteria 對象寫法(靈活、可復用)

$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()判斷是否存在記錄

最佳實踐

  1. 優先使用 CDbCriteria,便於動態構建複雜條件。
  2. 所有用戶輸入參數**必須**用 params 綁定,杜絕拼接 SQL。
  3. 大數據量列表務必加 limit、index 優化。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved