a5sys/doctrine-trait-bundle

安装数: 5,620

依赖者: 0

建议者: 0

安全性: 0

星标: 6

关注者: 4

分支: 2

公开问题: 2

类型:symfony-bundle

V2.0.0 2018-07-23 12:41 UTC

This package is auto-updated.

Last update: 2024-08-27 17:52:47 UTC


README

在特性中生成实体存根方法

生成的特性包含由 doctrine 生成器生成的 getter/setter。应该在实体中使用此特性。

优点

您的实体只包含有用的信息

  • doctrine 列和关系
  • 已修改的 getter/setter
  • 自定义方法

所有基本的 getter/setter 都在特性中。

Composer

使用 Composer 获取包

composer require --dev "a5sys/doctrine-trait-bundle"

激活包

在 AppKernel 中,为开发环境激活包

    if (in_array($this->getEnvironment(), array('dev'))) {
        ...
        $bundles[] = new A5sys\DoctrineTraitBundle\DoctrineTraitBundle();
    }

用法

生成特性

运行命令

    php app/console generate:doctrine:traits AppBundle\\Entity

如果您只想对一个实体操作,可以使用此命令

    php app/console generate:doctrine:traits "AppBundle:MyEntity"

这些命令将在 /src/AppBundle/Entity/Traits 目录下生成特性(s)

使用自定义方法

  • 进入与您的实体相关的特性
  • 剪切方法
  • 进入您的实体
  • 粘贴方法
  • 更新方法
  • 由于该方法已在实体中定义,因此命令不会重新生成此方法

示例

  • 创建您的实体(用户)而不包含 getter/setter
  • 运行命令
  • 将特性添加到您的实体中
  • 您已完成

实体

    namespace AppBundle/Entity;

    class User
    {
        use AppBundle/Entity/Traits/UserTrait;

        /**
         * @ORM\Id
         * @ORM\GeneratedValue
         * @ORM\Column(type="integer", nullable=false)
         */
        protected $id;

        /**
         * @ORM\Column(type="string", length=50, nullable=false)
         */
        protected $name;
    }

特性

    namespace AppBundle/Entity/Traits;

    /**
     * User
     */
    trait UserTrait
    {

        /**
         *
         * @param integer $id
         */
        public function setId($id)
        {
            $this->id = $id;
        }

        /**
         *
         * @return integer
         */
        public function getId()
        {
            return $this->id;
        }

        /**
         *
         * @param string $name
         */
        public function setName($name)
        {
            $this->name = $name;
        }

        /**
         * Get the name
         *
         * @return string
         */
        public function getName()
        {
            return $this->name;
        }
    }