@EvgeniiR
https://github.com/EvgeniiR

Задавать явно все default значения для полей через php каждый раз при создании объекта?

Начал изучать Symfony и Doctrine. Заинтересовался, как установать дефолтные значения для полей в БД.
Наткнулся на такое обсуждение: https://stackoverflow.com/questions/3376881/defaul... .
Суть сводится к тому, что Doctrine перестала такое поддерживать и делать нужно так:
<?php
/**
 * @Entity
 */
class myEntity {
    /**
     * @var string
     *
     * @Column(name="myColumn", type="string", length="50")
     */
    private $myColumn = 'myDefaultValue';
    ...
}

Правильно ли я понял, что теперь при каждом создании нового объекта, в INSERT запросе к БД дефолтные поля будут явно прописываться каждый раз? Это нормальная практика?
  • Вопрос задан
  • 122 просмотра
Решения вопроса 2
voronkovich
@voronkovich
Я бы использовал оба способа одновременно:
  • Указывать значение по умолчанию в сущности необходимо, т.к. сущность всегда должна быть валидна;
  • Указывать значение по умолчанию для столбца тоже необходимо, т.к. бывают случаи когда приходится работать с "голым" SQL.
<?php

namespace App\Entity;

/**
 * @Entity
 */
class User
{
    const DEFAULT_ROLE = 'user';

    /**
     * @Column(type="string", options={"default": User::DEFAULT_ROLE})
     *
     * @var string
     */
    private $role = self::DEFAULT_ROLE;
}
Ответ написан
prototype_denis
@prototype_denis
Symfony
<?php
/**
 * @Entity
 */
class myEntity {
    /**
     * @var string
     *
     * @Column(name="myColumn", type="string", length="50", options={"default": "default_value"})
     */
    private $myColumn = 'myDefaultValue';
    ...
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы