Doctrine实体的抽象类

Ham*_*bot 8 symfony doctrine-orm

我正在尝试为涉及一般字段created_atupdated_at值的实体创建一个抽象类:

<?php
namespace AppBundle;

use Doctrine\ORM;

abstract class Model {

    /**
     * @var \DateTime $created_at
     *
     * @ORM\Column(type="datetime")
     */
    private $created_at;

    /**
     * @var \DateTime $updated_at
     *
     * @ORM\Column(type="datetime")
     */
    private $updated_at;

}
Run Code Online (Sandbox Code Playgroud)

然后,我扩展我的课程:

<?php
namespace AppBundle\Entity;

use AppBundle\Model;

/**
 * Entity
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="RB\ProductsBundle\Entity\ProductRepository")
 */
class Entity extends Model
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=255, nullable=true)
     */
    private $name;
}
Run Code Online (Sandbox Code Playgroud)

问题是:当我创建时php app/console doctrine:schema:update --dump-sql,它无法识别模型字段.我怎么能改变呢?我应该使用特征还是类似的东西?

编辑:我试图* @ORM\MappedSuperclass在我的抽象类的顶部添加没有运气

Wil*_*ill 12

问题可能在于抽象父类中的属性被定义为private.将它们更改为protected,它应该工作.

顺便说一下,我使用traits来实现这个目的,而不是继承,因为你的实体类可以使用多个traits,但它们只能扩展一个抽象类.

  • 就是这样!谢谢 :) (2认同)