2010-05-30 141 views
1

在MySQL中我能爲這樣的列設置默認值:學說默認值和關係

ALTER TABLE <Table> CHANGE <Column> DEFAULT <NEW_DEFAULT_VALUE> 

我可以檢索默認值:

SELECT DEFAULT(<Column>) FROM <Table> LIMIT 1 

是否有可能實現這一概念與原則?

我真正需要的是這樣的方法在我的表類:

class UserTable extend Doctrine_Table { 
    /* ... */ 

    /** 
    * @return Doctrine_Record 
    */ 
    public function getDefaultProperty() { 
     return ???; 
    } 
    public function setDefaultProperty($value) { 
     /* $value can be either integer or Doctrine_Record */ 
    } 
} 

回答

0

讓我們看看我們是否可以弄清楚。

Line 567 of Record.php,該assignDefaultValues()方法創建對象,其填充默認的一部分,說:

$default = $this->_table->getDefaultValueOf($column); 

所以你實際上並不需要添加一個getDefaultProperty(),你可以使用:

$userTable = Doctrine::getTable('User'); 
$defaultName = $userTable->getDefaultValueOf('name'); 

但是,您似乎想要getDefaultProperty()返回Doctrine_Record。如果你只是想找回具有所有在其上設置的默認值,整個對象,我敢肯定,你可以使用:

$defaultUser = new User();(見Doctrine manual for Default Values

不過可以肯定的是您的默認值在schema.yml中定義,而不僅僅在數據庫中定義。 Doctrine不會從數據庫中讀取默認值,並依賴模式來告訴它該做什麼。

讓我知道這是如何工作的。

乾杯, 〜J

0

的Doctrine_Table類包含getDefaultValueOf方法,做了你在找什麼。所以,如果你有一條學說記錄,你可以寫下如下所示:$ record-> getTable() - > getDefaultValueOf('address_line_1'); 'address_line_1'是一列。希望這可以幫助。