xanweb / c5-entity
ConcreteCMS Entity
v2.0
2021-10-22 14:29 UTC
Requires
- php: >=7.4
- xanweb/c5-common: ^1.2
This package is auto-updated.
Last update: 2024-10-22 20:48:20 UTC
README
Reusable classes for entities
Installation
Include library to your composer.json
composer require xanweb/c5-entity
Usage
Simply you can extend EntityService and EntityObject classes to benefit from predefined methods
use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="MyEntityTable") */ class MyEntity extends \Xanweb\C5\Entity\EntityObject { ... } /** * @method MyEntity createEntity() * @method MyEntity create($data) * @method MyEntity getByID($id) * @method MyEntity[] getList() * * or if your IDE supports generic type * @implements EntityService<MyEntity> */ class MyEntityService extends \Xanweb\C5\Entity\Service\EntityService { /** * {@inheritdoc} * * @see \Xanweb\C5\Entity\Service\EntityService::getEntityClass() */ public function getEntityClass(): string { return MyEntity::class; } }
Use TimeStampableTrait to include created date and last updated date fields to your entity.
Please note that usage of this trait requires "HasLifecycleCallbacks" annotation.
See https://www.doctrine-project.org/projects/doctrine-orm/en/2.8/reference/annotations-reference.html#annref_haslifecyclecallbacks
use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="MyEntityTable") * @ORM\HasLifecycleCallbacks */ class MyEntity extends \Xanweb\C5\Entity\EntityObject { use \Xanweb\C5\Entity\Traits\TimeStampableTrait; ... }