Doctrine 2'de varsayılan bir değeri nasıl ayarlarım?
Veritabanı varsayılan değerleri "taşınabilir" olarak desteklenmez. Veritabanı varsayılan değerlerini kullanmanın tek yolu, alanın eşlendiği sütun için SQL
kod parçacığını (DEFAULT
nedeni dahil) belirttiğiniz columnDefinition
eşleme niteliğidir.
Kullanabilirsin:
<?php
/**
* @Entity
*/
class myEntity {
/**
* @var string
*
* @Column(name="myColumn", type="string", length="50")
*/
private $myColumn = 'myDefaultValue';
...
}
PHP düzeyinde varsayılan değerler tercih edilir, çünkü bunlar yeni oluşturulan ve kalıcı hale getirilen nesnelerde de düzgün bir şekilde kullanılabilir (Doctrine, varsayılan değerleri almak için yeni bir nesneyi kalıcı hale getirdikten sonra veritabanına geri dönmeyecektir).
Kullandığım geçici çözüm bir LifeCycleCallback
idi. Hala daha "native" bir yöntem olup olmadığını görmek için bekliyorum, örneğin @Column(type="string", default="hello default value")
.
/**
* @Entity @Table(name="posts") @HasLifeCycleCallbacks
*/
class Post implements Node, \Zend_Acl_Resource_Interface {
...
/**
* @PrePersist
*/
function onPrePersist() {
// set default date
$this->dtPosted = date('Y-m-d H:m:s');
}