Я думаю, что вы как-то неправильно поняли аннотации, потому что значение по умолчанию устанавливается через обычный php.
/**
* @ORM\Column(type="bool") <- This is an annotation
*/
protected $is_visible;
public function __construct()
{
$this->products = new ArrayCollection(); // <- This is not an annotation
$this->is_visible = true; // <- This is not an annotation
}
Нет никакой разницы в использовании сопоставления YAML для значения по умолчанию.Причина проста, вот как выглядит ваш класс с аннотациями:
use Doctrine\Common\Collections\ArrayCollection;
class Category
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\OneToMany(targetEntity="Product", mappedBy="category")
*/
protected $products;
/**
* @ORM\Column(type="bool")
*/
protected $is_visible;
public function __construct()
{
$this->products = new ArrayCollection();
$this->is_visible = true; // Default value for column is_visible
}
}
И вот как это выглядит с отображением YAML:
use Doctrine\Common\Collections\ArrayCollection;
class Category
{
protected $id;
protected $products;
protected $is_visible;
public function __construct()
{
$this->products = new ArrayCollection();
$this->is_visible = true; // Default value for column is_visible
}
}
Разница во втором примере естьбольше нет аннотаций, поскольку отображение выполняется через YAML.Конструкция класса выполняется точно так же.Таким образом, значения по умолчанию устанавливаются во время построения, что делается на простом PHP.
Для этой задачи нет разницы между аннотациями и отображением YAML.Итак, суть в том, что вам нужно отредактировать сгенерированный PHP-класс, чтобы выставить значения по умолчанию.Вы не можете установить его в YAML и позволить доктрине поставить этот код для вас, по крайней мере, во время нашего разговора.
Может быть, я неправильно понял ваш вопрос :), если это так, не спрашивайтене стесняйтесь поправлять меня.
Надеюсь, это поможет.
С уважением,Matt