Doctrine(Symfony) 加载夹具,参考不存在

Posted

技术标签:

【中文标题】Doctrine(Symfony) 加载夹具,参考不存在【英文标题】:Doctine(Symfony) Load Fixtures, reference doesnt exist 【发布时间】:2020-08-18 14:27:29 【问题描述】:

大家好,我正在使用 Doctrice ORM 开发 Symfony 堆栈,我在加载我的应用程序装置时遇到了问题。 该应用分为3个模型UserPostComments

具有 3 个功能 public function loadUser(ObjectManager $manager) / public function loadPost(ObjectManager $manager) / public functionloadComments(ObjectManager $manager) 其中两个有一个外键表,在 cmets 部分加载固定装置我在参考帖子上得到一个错误:

$comments->setPost($this->getReference(
                self::POSTS[rand(0, count(self::POSTS) - 1 )]['name']));

错误输出是Reference to "Vacation" does not exist,但是当我使用相同的方法加载我的帖子时,我没有在引用上看到该错误,鳕鱼看起来像这样:

$post->setUser($this->getReference(
                self::USERS[rand(0, count(self::USERS) - 1)]['last_name']));

【问题讨论】:

我不知道你的$this->getReference() 长什么样子,但我已经发现它非常奇怪,它接收到帖子的 name 而不仅仅是帖子对象(类似于用户)。也许这已经是原因……想详细说明一下吗? ^^ 好吧,我只是简单地发布了它的样子,我写下了我想要加载的值,post 是我的 Appfixtures 上的一个 const 数组,名称是在 ['name' = > '帖子名称']。 发布整个灯具类。您是否以正确的顺序加载夹具? symfony.com/doc/master/bundles/DoctrineFixturesBundle/… @blahy 是的,我先加载用户,然后是帖子,然后是 cmets ` public function load(ObjectManager $manager) $this->loadUsers($manager); $this->loadTheme($manager); $this->loadSousThemes($manager); ` 那么也许你只是没有addReferenceVacation 对象? 【参考方案1】:

这里回答了问题,提供了有关源代码和错误产生位置的更多详细信息:

Doctrine fixtures load, having issue setting references (foreign key) violates -not-null constraint

【讨论】:

以上是关于Doctrine(Symfony) 加载夹具,参考不存在的主要内容,如果未能解决你的问题,请参考以下文章

如何在 symfony WebTestCase 的测试中按夹具类型获取教义夹具参考?

Symfony 3.3 Doctrine Fixtures 加载跳过 SQL 视图

Symfony2,Doctrine,延迟加载和代理类问题

Symfony Doctrine ORM ManyToMany - 带有标签的博客 - 我没有从博客中获取所有标签,没有延迟加载

是否可以在不删除数据库的情况下加载学说夹具

Symfony 4:调用 getter 后,Doctrine2 LAZY Fetch Collection 仍然为空