Symfony 3 Doctrine undefined index



我正在尝试使用原则从MySQL数据库中获取对象。它与另一个具有一对一的关系。我收到此错误:Notice: Undefined index: id我应该纠正什么才能使其正常工作?我的获取代码非常简单,我尝试获取所有对象:

    $emArt = $this->getDoctrine()->getRepository(Article::class);
    $articles = $emArt->findAll();

型号如下:

文章.php

    /**
     * @ORMEntity
     * @ORMTable(name="Article")
     */
    class Article
    {
        /**
         * @ORMColumn(type="integer")
         * @ORMId
         * @ORMGeneratedValue(strategy="AUTO")
         */
        private $ID;
        /**
         * @ORMOneToOne(targetEntity="ArticleTypes", inversedBy="articleTypeId")
         * @ORMJoinColumn(name="articleTypeId", referencedColumnName="id")
         */
        private $articleType;
        /**
         * @ORMColumn(name="articleName", type="text")
         */
        private $articleName;
        /**
         * @ORMColumn(name="content", type="text")
         */
        private $content;
        /**
         * @ORMColumn(name="image", type="string")
         * @AssertFile(mimeTypes={ "image/png" })
         */
        public $image;
        public function getArticleImage()
        {
            return $this->image;
        }
        public function setArticleImage($newImage)
        {
            $this->image = $newImage;
        }
        public function getArticleContent()
        {
            return $this->content;
        }
        public function setArticleContent($name)
        {
            $this->content = $name;
        }
        public function getArticleName()
        {
            return $this->articleName;
        }
        public function setArticleName($name)
        {
            $this->articleName = $name;
        }
        public function getArticleType()
        {
            return $this->articleType;
        }
        public function setArticleType($type)
        {
            $this->articleType = $type;
        }
    }

文章类型.php

/**
 * @ORMEntity
 * @ORMTable(name="ArticleTypes")
 */
class ArticleTypes
{
    /**
     * @ORMColumn(type="integer")
     * @ORMId
     * @ORMGeneratedValue(strategy="AUTO")
     * @ORMOneToOne(targetEntity="Article", mappedBy="articleTypeId")
     */
    private $ID;
    /**
     * @ORMColumn(name="articleType", type="text")
     */
    private $articleType;
    public function getArticleType()
    {
        return $this->articleType;
    }
    public function setArticleType($newType)
    {
        $this->articleType = $newType;
    }
}

这是一个 PHP 注意不?您还应该在带有错误 ?

但是我也看到了你的学说映射中的错误:你不能在字段中使用这样的教义注释,你应该将你的关系链接到对象:

 /**
 * @ORMEntity
 * @ORMTable(name="Article")
 */
class Article
{
    /**
     * @ORMOneToOne(targetEntity="ArticleTypes", inversedBy="article")
     * @ORMJoinColumn(name="articleTypeId", referencedColumnName="id")
     */
    private $articleType;
    ....
}

和:

/**
 * @ORMEntity
 * @ORMTable(name="ArticleTypes")
 */
class ArticleTypes
{
    /**
     * @ORMColumn(type="integer")
     * @ORMId
     * @ORMGeneratedValue(strategy="AUTO")
     */
    private $id;
    /** 
     * @var Article $article
     * @ORMOneToOne(targetEntity="Article", mappedBy="articleType")
     */
    private $article;
    ....
}

即使您有一对一的关系,您也可以拥有不同的 ID。

相关内容

  • 没有找到相关文章

最新更新