php - Symfony 3 Doctrine 未定义索引

标签 php mysql symfony doctrine-orm

我正在尝试使用原则从 MySQL 数据库中获取对象。它与其他存在一对一的关系。我收到此错误:注意:未定义索引:id 我应该纠正什么才能使其正常工作? 我的获取代码非常简单,我尝试获取所有对象:

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

模型如下:

文章.php

    /**
     * @ORM\Entity
     * @ORM\Table(name="Article")
     */
    class Article
    {
        /**
         * @ORM\Column(type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $ID;
        /**
         * @ORM\OneToOne(targetEntity="ArticleTypes", inversedBy="articleTypeId")
         * @ORM\JoinColumn(name="articleTypeId", referencedColumnName="id")
         */
        private $articleType;
        /**
         * @ORM\Column(name="articleName", type="text")
         */
        private $articleName;
        /**
         * @ORM\Column(name="content", type="text")
         */
        private $content;

        /**
         * @ORM\Column(name="image", type="string")
         * @Assert\File(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;
        }

    }

ArticleTypes.php

/**
 * @ORM\Entity
 * @ORM\Table(name="ArticleTypes")
 */
class ArticleTypes
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\OneToOne(targetEntity="Article", mappedBy="articleTypeId")
     */
    private $ID;
    /**
     * @ORM\Column(name="articleType", type="text")
     */
    private $articleType;

    public function getArticleType()
    {
        return $this->articleType;
    }
    public function setArticleType($newType)
    {
        $this->articleType = $newType;
    }
}

最佳答案

这是一个 PHP 通知,不是吗?您还应该在出现错误的文件中找到行号?

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

 /**
 * @ORM\Entity
 * @ORM\Table(name="Article")
 */
class Article
{
    /**
     * @ORM\OneToOne(targetEntity="ArticleTypes", inversedBy="article")
     * @ORM\JoinColumn(name="articleTypeId", referencedColumnName="id")
     */
    private $articleType;
    ....
}

还有:

/**
 * @ORM\Entity
 * @ORM\Table(name="ArticleTypes")
 */
class ArticleTypes
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /** 
     * @var Article $article
     * @ORM\OneToOne(targetEntity="Article", mappedBy="articleType")
     */
    private $article;

    ....
}

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

关于php - Symfony 3 Doctrine 未定义索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46932309/

相关文章:

javascript - HTML 输入输出

php - Symfony 上的 Paypal Rest API

MySQL 查询返回 0 行

symfony - 媒体文件行为测试

php - 我将如何在 Doctrine2 中执行 MySQL 计数(*)?

javascript - 使用 ajax、php 加载更多帖子

php - 是否可以从方法中删除传递给方法的值

php - 我应该为上传的文件设置什么文件权限

SQL:在每个类别中查找评分最高的文章

java - 搜索数据库中的列值是否存在于文件中