adrenalinkin / entity-helper-bundle
此包为使用Doctrine管理的实体提供帮助。
v1.0.6
2018-03-20 09:38 UTC
Requires
- php: ~5.6||~7.0
- doctrine/common: ~2.4
- doctrine/orm: ~2.4
- symfony/config: ~2.5||~3.0
- symfony/dependency-injection: ~2.5||~3.0
- symfony/http-kernel: ~2.5||~3.0
Suggests
- symfony/symfony: Allows more advanced functionality with full Symfony package
README
简介
辅助工具允许您对由Doctrine
管理的实体执行常用操作。
安装
步骤 1: 下载包
打开命令行控制台,进入您的项目目录并执行以下命令以下载此包的最新稳定版本
composer require adrenalinkin/entity-helper-bundle
此命令要求您全局安装Composer。
步骤 2: 启用包
<?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'); } }
用法
通过依赖注入容器获取实体辅助器
<?php // ... /** @var \Symfony\Component\DependencyInjection\ContainerInterface $container */ $entityHelper = $container->get('linkin_entity_helper.helper'); // ...
假设我们有一个实体 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; // ... }
createEntity
通过接收到的类名创建由Doctrine管理的类的实例。
<?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]); }
getEntityClassFull
返回接收到的实体的完整名称或类名。
<?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);
在所有情况下将返回字符串值:AcmeBundle\Entity\User
。
getEntityClassShort
返回接收到的实体的简称或类名。
<?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);
在所有情况下将返回字符串值:AcmeBundle:User
。
getEntityIdNames
返回标识字段名称的数值索引数组。
<?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);
在所有情况下将返回数组值:['id']
。
getEntityIdName
返回接收到的实体对象或类名的单个标识字段名称。 重要:在这种情况下,当实体有多个标识名称时,方法将返回第一个标识名称。
<?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);
在所有情况下将返回字符串值:id
。
getEntityIdValues
返回接收到的实体对象的标识值数组。
<?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);
将返回数组值:[1]
。
getEntityIdValue
返回接收到的实体对象的单个标识字段值。 重要:在这种情况下,当实体有多个标识时,方法将返回第一个标识字段值。
<?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);
将返回数值:1
。
getEntityMetadata
返回接收到的实体或类名的\Doctrine\ORM\Mapping\ClassMetadata
对象。
<?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);
在所有情况下将返回对象值:\Doctrine\ORM\Mapping\ClassMetadata
。
isManagedByDoctrine
确定请求的类是否受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);
在所有情况下将返回布尔值:true
。