在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 */
}
}
答案 0 :(得分:0)
Doctrine_Table类包含getDefaultValueOf方法,该方法可以满足您的需求。所以,如果你有一个学说记录,你可以这样写:$ record-&gt; getTable() - &gt; getDefaultValueOf('address_line_1');其中'address_line_1'是一列。希望这会有所帮助。
答案 1 :(得分: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不会从数据库中读取默认值,并依赖于架构来告诉它该做什么。
让我知道这是如何运作的。
干杯, 〜Ĵ