Вышла новая версия Doctrine ORM 2.11

Дата публикации: 2022-01-11
Просмотры: 314

Вышла очередная минорная версия Doctrine ORM 2.11.
Это версия, которая поддерживает перечисления PHP 8.1.

Вышла новая версия Doctrine ORM 2.11

Ниже приведены некоторые изменения новой версии Doctrine ORM 2.11.
Полный список изменения можно посмотреть тут.

Поддержка перечислений PHP 8.1

В следующем примере приведен пример использования переслений для описания свойств сущностей БД.

enum Suit: string {
    case Hearts = 'H';
    case Diamonds = 'D';
    case Clubs = 'C';
    case Spades = 'S';
}

#[Entity]
class Card
{
    /** ... */

    #[Column(type: 'string', enumType: Suit::class)]
    public $suit;
}

Виртуальные и сгенерированные столбцы

Появилась возможность указывать опции (insertable, updatable, generated) для свойств сущностей. Пример 1:

#[Entity]
class User
{
     #[ManyToOne(targetEntity: Country:class), JoinColumn(name: "country_code", referencedColumnName: "country_code")]
     public $country;

     #[Column(type: "string", name: "country_code", insertable: false, updatable: false)]
     public $countryCode;
}

Пример 2:

#[Entity]
class Article
{
    #[Column(type: "datetime",
        columnDefinition: "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP",
        insertable: false,
        updatable: false,
        generated: "ALWAYS")]
    public $created;
}

Свойства только для чтения

Теперь свойствам сущностей можно указать ключевое слово readonly, которое запрещает его обновление.

#[Entity, Table(name: 'author')]
class Author
{
    #[Column, Id, GeneratedValue]
    private readonly int $id;

    #[Column]
    private readonly string $name;
}

Арифметические выражения в операторе IN

Теперь внутри оператора IN можно использовать арифметические выражения или функции.

SELECT u FROM User u WHERE u.id IN (1 + 1, FOO(u.id))

Ссылка на источник: https://www.doctrine-project.org/2022/01/11/orm-2.11.html

Поделиться статьей:

Комментарии:

Авторизуйтесь, для того, чтобы оставить комментарий. Войти на сайт
Подписка на новости
Узнавайте о новых статьях первыми.
Профиль