嗨,我是Yii框架的新手。在Yii中向數據庫添加列
我的問題在這裏是如何添加一列到數據庫中的表?
我用addColumn()
如下:
Yii:app()->databasename->tablename->addColumn('tablename', 'newcolumn');
這裏我的問題是我有什麼用其替換app()
。我的意思是,應該將app()替換爲數據庫名稱,表名,列名或其他名稱?
謝謝。
嗨,我是Yii框架的新手。在Yii中向數據庫添加列
我的問題在這裏是如何添加一列到數據庫中的表?
我用addColumn()
如下:
Yii:app()->databasename->tablename->addColumn('tablename', 'newcolumn');
這裏我的問題是我有什麼用其替換app()
。我的意思是,應該將app()替換爲數據庫名稱,表名,列名或其他名稱?
謝謝。
這是你應該如何調用該函數:
$success = Yii::app()->db->createCommand()
->addColumn(string $table, string $column, string $type);
只需替換addColumn
方法的三個變量。
API:http://www.yiiframework.com/doc/api/1.1/CDbCommand#addColumn-detail
我不知道你已經找到了的Yii ::應用程序() - 從> dbName-> tableName-> addColumn(),但據我所知,這塊代碼將無法使用。首先,如果您正在嘗試編寫一些可以使您的表保持最新的內容(例如通過添加/刪除列/表對數據庫進行版本控制的方式),請考慮使用database migrations。
如果您需要此查詢,請使用CDbCommand::addColumn()。例如:
Yii::app()->db->createCommand()->addColumn('user', 'name', 'varchar(64)');
作爲一般的做法,建議什麼?數據庫遷移或查詢?在我正在編寫的代碼中,我將創建此列一次,但在需要時將值添加到列中。例如,我今天創建了該列,但每隔2-3天只能在列中添加一次值。 – Newtt
如果您和其他開發人員正在開發一個項目,並且您需要一種方法來保持每個人的數據庫處於最新狀態,或者如果您想稍後進行構建過程(例如使用Phing),那麼遷移效果會更好。但是,如果此列是基於代碼中的某些邏輯動態創建的,則最好使用該函數。但是,在後一種情況下,我會敦促您重新考慮您的設計;可能有更簡潔的方法來做到這一點(I.E.動態添加基於代碼中某些邏輯的列並不是一個好習慣)。 –
爲什麼需要在運行時添加列?爲什麼不預先設計你的模式?你正在解決什麼是最初的任務?謝謝。 – spacediver