Reusable classes for entities
Include library to your composer.json
composer require xanweb/c5-entity
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;
...
}