Вышла новая версия Doctrine ORM 2.11
Вышла очередная минорная версия Doctrine ORM 2.11.
Это версия, которая поддерживает перечисления PHP 8.1.
Ниже приведены некоторые изменения новой версии 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
Предыдущая статья:
Вышли новые версии Symfony 5.4 и 6.0Следующая статья:
Вышла новая версия Laravel 9.0
Поделиться статьей:
Комментарии:
Авторизуйтесь, для того, чтобы оставить комментарий.
Войти на сайт
Подписка на новости
Разделы блога
Метки
Профиль
Последние комментарии
Разница между DELETE, DROP и TRUNCATE в SQL
Здравствуйте, спасибо за статью!
Но, признаться, я не понял самую суть различий. В статье рассказывается о том, в каких случаях применяются различные команды, но не объясняется почуму именно было принято так делать. В чём была логическая необходимость сделать именно так. Иначе придётся просто запомнить.
Если можно, объясните пожалуйста! Например, так: Если бы применялась одна и таже команда в различных ситуациях, то последовало бы в таких-то случаях то-то и то-то.
Заранее, спасибо!
Вышла новая версия Composer 2.7 Срочно обновитесь!!!
Разница между DELETE, DROP и TRUNCATE в SQL Очень полезная информация
Вышла новая версия Composer 2.7 Срочно обновитесь!!!
Разница между DELETE, DROP и TRUNCATE в SQL Очень полезная информация