У меня есть 2 сущности, одна из которых является основным суперклассом, который состоит из дискриминаторов и т. Д., А другая расширяет этот суперкласс ... так что я могу записать все действия в одну таблицу под названием Action.
myСущность дискриминатора:
namespace Entities\Members;
/**
* @Entity
* @Table(name="actions")
* @MappedSuperClass
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="action_type", type="string")
* @DiscriminatorMap({"comments" = "Comments", "blog" = "Blog"})
* @HasLifecycleCallbacksIndex
*/
class Action {
/**
* @Id
* @Column(name="id", type="integer")
* @GeneratedValue(strategy="AUTO")
*/
protected $id;
/** @Column(type="string", length=300, nullable=true) */
public $name;
/** @Column(name="action_date", type="datetime", columnDefinition="datetime", nullable=false) */
protected $action_date;
/** @PrePersist */
public function updated() {
$this->action_date = new \DateTime("now");
}
}
это одна из моих сущностей, которую я использую для расширения вышеуказанной сущности дискриминатора:
namespace Entities\Members;
/**
* @Entity
* @Table(name="comments")
* @HasLifecycleCallbacks
*/
class Comments extends Action {
/**
* @Id @Column(name="id", type="bigint",length=15)
* @GeneratedValue(strategy="AUTO")
*/
protected $id;
/** @Column(name="blog_id", type="integer", nullable=true) */
protected $blog_id;
/** @Column(name="comment", type="string", length=255, nullable=true) */
protected $comment;
/** @Column(name="comment_date", type="datetime", columnDefinition="datetime", nullable=true) */
protected $comment_date;
/**
* @ManyToOne(targetEntity="Members",inversedBy="comments", cascade={"persist"})
* @JoinColumn(name="userid", referencedColumnName="id")
*/
protected $author;
public function __construct() {
$this->comment_date = $this->comment_date = new \DateTime("now");
}
}
это хорошо работает, когда я сохраняю сущность комментариев, например
$entity = new Entities\Comments;
$entity->comment = "my new comment";
$this->em->persist($entity);
$this->em->flush();
когда я сохраняюсь, он успешно добавляет действие в таблицу действий ...
однако я больше не могу использовать методы findBy, findByOne, возвращаемое значение любого результата этих методов= null теперь, когда я редактирую класс комментариев и удаляю 'extension from Action', начинает работать метод доктрины findby, findOneBy, но он не будет добавлен в таблицу дискриминатора tmy, поскольку он не расширяет основной суперкласс Actions ...
мне нужно, чтобы он расширял действия и имел такой метод учения, как find, findOneBy и т. Д., Чтобы он также работал ...
есть предложения?