修改 protected/config/main.php,取消註釋 MySQL 連接配置並填寫正確憑證:
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=testdb',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8',
),
創建 protected/tests/unit/DbTest.php:
<?php
class DbTest extends CTestCase {
public function testConnection() {
$this->assertNotEquals(NULL, Yii::app()->db);
}
}
執行測試:
cd protected/tests phpunit unit/DbTest.php
$count = User::model()->updateByPk(
$id, // 主鍵值或陣列
array('email'=>'new@test.com'), // 更新字段陣列
'status=:status', // 條件子句
array(':status'=>1) // 參數綁定
);
if ($count > 0) echo '更新成功';
適用場景:已知主鍵,批量更新,無需先查詢實體。
$model = User::model()->findByPk($id);
if ($model) {
$model->username = 'yiistudy';
$model->password = 'mysql';
$count = $model->update(array('username', 'password')); // 僅更新指定字段
echo $count ? '成功' : '失敗';
}
優勢:觸發 beforeSave()、afterSave() 等生命週期事件,支持驗證規則,適合複雜業務邏輯。
updateAll() 或 DAO 直寫 SQLYii::app()->db->transaction 中enableProfiling 監控慢查詢