实体类不会在Symfony 2.1和Doctrine中正确扩展基类

时间:2013-02-19 12:26:06

标签: doctrine-orm symfony-2.1

我创建了具有generalBundleModel的单独Entity。我的storeBundle扩展了该捆绑实体。但是

app/console doctrine:schema:update --force

命令不会创建generalBundle个字段。它只创建storeBundle个额外创建的字段。我不知道哪里出错了可以有人建议吗?

我的generalBundle模型类包含

namespace ste\GeneralBundle\Model;

use DateTime;

abstract class Share 
{
    protected $id;
    protected $user;
    protected $comment;

    public function __construct()
    {
        $this->setCreatedAt(new \DateTime());
        $this->setUpdatedAt(new \DateTime());
    }

    public function getId()
    {
        return $this->id;
    }



    public function setComment($comment)
    {
        $this->comment = $comment;
    }


    public function getComment()
    {
        return $this->comment;
    }
}

我的generalBundle实体类包含

    namespace ste\ActivityBundle\Entity;

    use ste\GeneralBundle\Model\Share as BaseShare;


    class Share extends BaseShare
    {

    }

最后,我的StoreBundle实体类包含

namespace ste\StoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Doctrine\Common\Collections\ArrayCollection;
use ste\GeneralBundle\Entity\Share as BaseShare;

    /**
     * ste\StoreBundle\Entity\Share
     *
     * @ORM\Table(name="shares")
     */
    class Share extends BaseShare
    {
        /** 
         * @var integer $id
         *
         * @ORM\Column(name="id", type="integer", nullable=false)
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="IDENTITY")
         */
        protected $id;
    }

此处protected $id;提交的文件稍后会添加,因为我收到错误

No identifier/primary key specified for Entity "ste\StoreBundle\Entity\Share" sub class of "ste\GeneralBundle\Entity\Share". Every Enti  
  ty must have an identifier/primary key.  

我的GeneralBundle > Resources> Config >Doctrine包含文件Share.orm.xml包含:

<?xml version="1.0" encoding="UTF-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
                  http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">

    <entity name="ste\GeneralBundle\Entity\Share" table="share">

        <id name="id" column="id" type="integer">
            <generator strategy="AUTO" />
        </id>

        <field name="user" column="user_id" type="integer" />


        <field name="comment" column="comment" type="string" length="255" />


    </entity>

</doctrine-mapping>

没有进行其他配置!任何线索?有什么要添加DependencyInjection

1 个答案:

答案 0 :(得分:0)

我得到了答案。我必须在config.yml这些行添加:

orm:
        entity_managers:
            default:
                mappings:
                   steStoreBundle: ~
                   steGeneralBundle: ~

因为在我的情况下它是StoreBundle以外的单独的捆绑包。

相关问题