adrenalinkin/entity-helper-bundle
Symfony bundle providing a Doctrine entity helper service to streamline common entity operations. Easily create managed entity instances by class name and access helper methods via the service container, reducing boilerplate when working with Doctrine entities.
Helper allows you to perform often required operations with entities which managed by Doctrine.
Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
composer require adrenalinkin/entity-helper-bundle
This command requires you to have Composer install globally.
<?php
// app/AppKernel.php
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;
/**
* The Kernel is the heart of the Symfony system
*/
class AppKernel extends Kernel
{
/**
* {@inheritdoc}
*/
public function registerBundles()
{
$bundles = [
// ...
new Linkin\Bundle\EntityHelperBundle\LinkinEntityHelperBundle(),
];
return $bundles;
}
/**
* {@inheritdoc}
*/
public function registerContainerConfiguration(LoaderInterface $loader)
{
$loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');
}
}
Get entity helper by dependencies container:
<?php
// ...
/** @var \Symfony\Component\DependencyInjection\ContainerInterface $container */
$entityHelper = $container->get('linkin_entity_helper.helper');
// ...
Let's say we have an entity AcmeBundle\Entity\User:
<?php
// AcmeBundle\Entity\User.php
// ...
class User
{
/**
* @var int
*
* @ORM\Id
* @ORM\Column(type="integer", name="id_user")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(type="string", nullable=false)
*/
private $password;
/**
* @ORM\Column(type="string", nullable=false, length=50, unique=true)
*
* @var string
*/
private $username;
// ...
}
Create instance of the class, which managed by Doctrine, by received class name.
<?php
// ...
/** @var \Symfony\Component\DependencyInjection\ContainerInterface $container */
$entityHelper = $container->get('linkin_entity_helper.helper');
// Create empty User entity
$user = $entityHelper->createEntity(User::class);
// Create empty User entity by received short name
$user = $entityHelper->createEntity('AcmeBundle:User');
// Create User entity and fill some fields
$user = $entityHelper->createEntity('AcmeBundle:User', ['id' => 1, 'username' => 'acme-login']);
// Create User entity and fill identity field in that case when you don't know the name of the identity field
foreach (['AcmeBundle:User', 'AcmeBundle:Role'] as $className) {
$object = $entityHelper->createEntity($className, [EntityHelper::IDENTITY => 1]);
}
Returns full name of the received entity or class name.
<?php
// ...
/** @var \AcmeBundle\Entity\User $user */
$user = new User();
/** @var \Symfony\Component\DependencyInjection\ContainerInterface $container */
$entityHelper = $container->get('linkin_entity_helper.helper');
$className = $entityHelper->getEntityClassFull(User::class);
$className = $entityHelper->getEntityClassFull('AcmeBundle:User');
$className = $entityHelper->getEntityClassFull($user);
In the all cases will be return string value: AcmeBundle\Entity\User.
Returns short name of the received entity or class name.
<?php
// ...
/** @var \AcmeBundle\Entity\User $user */
$user = new User();
/** @var \Symfony\Component\DependencyInjection\ContainerInterface $container */
$entityHelper = $container->get('linkin_entity_helper.helper');
$className = $entityHelper->getEntityClassShort(User::class);
$className = $entityHelper->getEntityClassShort('AcmeBundle\Entity\User');
$className = $entityHelper->getEntityClassShort($user);
In the all cases will be return string value: AcmeBundle:User.
Returns an array of identifier field names numerically indexed.
<?php
// ...
/** @var \AcmeBundle\Entity\User $user */
$user = new User();
/** @var \Symfony\Component\DependencyInjection\ContainerInterface $container */
$entityHelper = $container->get('linkin_entity_helper.helper');
$names = $entityHelper->getEntityIdNames(User::class);
$names = $entityHelper->getEntityIdNames('AcmeBundle\Entity\User');
$names = $entityHelper->getEntityIdNames('AcmeBundle:User');
$names = $entityHelper->getEntityIdNames($user);
In the all cases will be return array value: ['id'].
Returns single identifier field name by received entity object or class name. Important: In that case when entity have several identifier names method will be return only first identifier name.
<?php
// ...
/** @var \AcmeBundle\Entity\User $user */
$user = new User();
/** @var \Symfony\Component\DependencyInjection\ContainerInterface $container */
$entityHelper = $container->get('linkin_entity_helper.helper');
$idName = $entityHelper->getEntityIdName(User::class);
$idName = $entityHelper->getEntityIdName('AcmeBundle\Entity\User');
$idName = $entityHelper->getEntityIdName('AcmeBundle:User');
$idName = $entityHelper->getEntityIdName($user);
In the all cases will be return string value: id.
Returns an array of identifier values by received entity object.
<?php
// ...
/** @var \Symfony\Component\DependencyInjection\ContainerInterface $container */
$entityHelper = $container->get('linkin_entity_helper.helper');
/** @var \AcmeBundle\Entity\User $user */
$user = $entityHelper->createEntity('AcmeBundle:User', ['id' => 1]);
$idValues = $entityHelper->getEntityIdValues($user);
Will be return array value: [1].
Returns single identifier field value by received entity object. Important: In that case when entity have several identifier method will be return only first identifier field value.
<?php
// ...
/** @var \Symfony\Component\DependencyInjection\ContainerInterface $container */
$entityHelper = $container->get('linkin_entity_helper.helper');
/** @var \AcmeBundle\Entity\User $user */
$user = $entityHelper->createEntity('AcmeBundle:User', ['id' => 1]);
$idValue = $entityHelper->getEntityIdValues($user);
Will be return numeric value: 1.
Returns \Doctrine\ORM\Mapping\ClassMetadata object for received entity or class name.
<?php
// ...
/** @var \AcmeBundle\Entity\User $user */
$user = new User();
/** @var \Symfony\Component\DependencyInjection\ContainerInterface $container */
$entityHelper = $container->get('linkin_entity_helper.helper');
$metaData = $entityHelper->getEntityMetadata(User::class);
$metaData = $entityHelper->getEntityMetadata('AcmeBundle\Entity\User');
$metaData = $entityHelper->getEntityMetadata('AcmeBundle:User');
$metaData = $entityHelper->getEntityMetadata($user);
In the all cases will be return object value: \Doctrine\ORM\Mapping\ClassMetadata.
Determines whether the requested class is under the control of Doctrine.
<?php
// ...
/** @var \AcmeBundle\Entity\User $user */
$user = new User();
/** @var \Symfony\Component\DependencyInjection\ContainerInterface $container */
$entityHelper = $container->get('linkin_entity_helper.helper');
$isManaged = $entityHelper->isManagedByDoctrine(User::class);
$isManaged = $entityHelper->isManagedByDoctrine('AcmeBundle\Entity\User');
$isManaged = $entityHelper->isManagedByDoctrine('AcmeBundle:User');
$isManaged = $entityHelper->isManagedByDoctrine($user);
In the all cases will be return bool value: true.
How can I help you explore Laravel packages today?