学说默认值和关系

时间:2010-05-30 17:53:26

标签: doctrine

在mysql中我可以像这样设置列的默认值:

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

我可以检索默认值:

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

是否有可能通过Doctrine实现这一概念?

我真正需要的是我的表类中的这些方法:

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

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

2 个答案:

答案 0 :(得分:0)

Doctrine_Table类包含getDefaultValueOf方法,该方法可以满足您的需求。所以,如果你有一个学说记录,你可以这样写:$ record-&gt; getTable() - &gt; getDefaultValueOf('address_line_1');其中'address_line_1'是一列。希望这会有所帮助。

答案 1 :(得分:0)

让我们看看我们是否可以解决这个问题。

Line 567 of Record.phpassignDefaultValues()方法的一部分,它在创建对象时填充默认值,说:

$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不会从数据库中读取默认值,并依赖于架构来告诉它该做什么。

让我知道这是如何运作的。

干杯, 〜Ĵ