xanweb/c5-entity

ConcreteCMS Entity

v2.0 2021-10-22 14:29 UTC

This package is auto-updated.

Last update: 2024-10-22 20:48:20 UTC


README

Latest Version on Packagist Software License

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;
    ...
}