Doctrine(Symfony) 加载夹具,参考不存在
Posted
技术标签:
【中文标题】Doctrine(Symfony) 加载夹具,参考不存在【英文标题】:Doctine(Symfony) Load Fixtures, reference doesnt exist 【发布时间】:2020-08-18 14:27:29 【问题描述】:大家好,我正在使用 Doctrice ORM 开发 Symfony 堆栈,我在加载我的应用程序装置时遇到了问题。
该应用分为3个模型User
、Post
、Comments
具有 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); `
那么也许你只是没有addReference
到Vacation
对象?
【参考方案1】:
这里回答了问题,提供了有关源代码和错误产生位置的更多详细信息:
Doctrine fixtures load, having issue setting references (foreign key) violates -not-null constraint
【讨论】:
以上是关于Doctrine(Symfony) 加载夹具,参考不存在的主要内容,如果未能解决你的问题,请参考以下文章
如何在 symfony WebTestCase 的测试中按夹具类型获取教义夹具参考?
Symfony 3.3 Doctrine Fixtures 加载跳过 SQL 视图
Symfony Doctrine ORM ManyToMany - 带有标签的博客 - 我没有从博客中获取所有标签,没有延迟加载