【问题标题】:With Symfony 2.2 and Doctrine 2.2.* I can't save manyToMany relations with cascade: persist使用 Symfony 2.2 和 Doctrine 2.2.* 我无法使用级联保存 manyToMany 关系:坚持
【发布时间】:2013-03-26 16:00:48
【问题描述】:

我尝试使用 Doctrine casecade 功能自动保存两个实体之间的关系,但它似乎不起作用。

我在这里做了一个演示:https://github.com/asakurayoh/demo_bug_doctrine 所以我使用教义夹具来制作我的演示。 您需要创建 de 数据库 (app/console dictionary:database:create),迁移表 (app/console dictionary:migrations:migrate),然后加载夹具 (app/console dictionary:fixtures:load)。第三个夹具(src/Demo/MyBundle/DataFixtures/ORM/TagsNewsFixtures.php)将所有标签实体添加到所有新闻中。如果你去数据库,你会看到 news_tag 表中没有保存任何关系......我认为我的关系在我的映射(Resources/config/doctrine/News.orm.yml 和 Tag.orm. yml) 并且设置了级联属性。

有人能找到这段代码的问题吗?我到处搜索(stackoverflow 也是),我已经完成了大家所说的一切......它应该可以工作......

感谢救了我的命(还有我的实体关系,哈!)

朝仓哟

【问题讨论】:

    标签: symfony doctrine-orm save relation


    【解决方案1】:

    问题在于固定装置加载顺序 - TagNewsFixtures 首先加载,因此当时数据库中没有标签或新闻。尝试使用 ordere 强制加载顺序

    namespace Acme\HelloBundle\DataFixtures\ORM;
    
    use Doctrine\Common\DataFixtures\AbstractFixture;
    use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
    use Doctrine\Common\Persistence\ObjectManager;
    
    class LoadData extends AbstractFixture implements OrderedFixtureInterface
    {
        public function load(ObjectManager $manager)
        {
            // ...
        }
    
        public function getOrder()
        {
            return 1; // the order in which fixtures will be loaded
        }
    }
    

    【讨论】:

    • 我只是验证了这一点,并且我的固定装置按此顺序加载(在我的情况下):1. NewsFixture,2. TagFixtures,3. TagNewsFixtures...我转储了新闻和标签的值在我的 TagNewsFixture 中确定......所以不是这样......
    • 为了安全起见,我已将 OrderedFixtureInterface 添加到我的夹具并设置了顺序,但在我的服务器上,顺序已经正确。
    • 我使用的方式与此处显示的方式相同(抱歉,法语):siteduzero.com/informatique/tutoriels/… 但在我找到的每个教程中都是相同的内容。
    【解决方案2】:

    我发现了问题。 “joinTable”属性需要在新闻端,新闻使用“inversedBy”属性,而不是 MappedBy(即标签)。所以它起作用了。并且要将新闻添加到标签(然后做相反的事情),我们需要在 Tag 实体中指定将标签添加到新闻......我不明白为什么 Doctrine 默认不这样做......奇怪……

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    相关资源
    最近更新 更多