symfony Doctrne -- Автозаполнение даты в БД -- Gedmo
Primary tabs
С помощью аннотаций Symfony можно настроить автозаполнение даты создания и обновления объекта сущности в БД. Для этого будем использовать StofDoctrineExtensionsBundle, который имеет в своих зависимостях Gedmo (также может реализовать поведения sluggable, translatable, loggable и tree).
- Устанавливаем StofDoctrineExtensionsBundle.
- Прописываем в консоли:
composer require stof/doctrine-extensions-bundle
composer update
если данные в вендор не добавятся, можно удалить целиком папку vendor и запустить
composer install
- Добавляем в AppKernel.php:
public function registerBundles() { $bundles = [ // ... new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(), ]; }
- Настраиваем config.yml.
Обратите внимание, что если у вас (как у меня) соединение с БД имеет название, вам следует изменить слово default на имя соединения, иначе будет возникать такая ошибка.doctrine: orm: auto_mapping: true stof_doctrine_extensions: orm: default: sluggable: true timestampable: true
- Прописываем в консоли:
- В классе сущности объявляем использование Gedmo в use-ах и добавляем аннотации нужным полям:
<?php // src/AppBundle/Entity/Category.php namespace AppBundle\Entity; use DateTime; use Doctrine\ORM\Mapping as ORM; use Gedmo\Mapping\Annotation as Gedmo; /** * @ORM\Entity * * @ORM\Table(name="category") */ class Category { // ... /** * @var DateTime * * @Gedmo\Timestampable(on="create") * * @ORM\Column(name="created_at", type="datetime") */ protected $createdAt; /** * @var DateTime * * @Gedmo\Timestampable(on="update") * * @ORM\Column(name="updated_at", type="datetime") */ protected $updatedAt; }
Всё
Теперь при создании объектов Category дата будет записываться автоматически без использования методов setCreatedAt() и setUpdatedAt().
Источники
https://habrahabr.ru/post/134258/
https://symfony.com/doc/master/bundles/S...
- Log in to post comments
- 3160 reads