教义 - 递归保存不适用于学说

时间:2012-04-05 09:44:02

标签: php doctrine doctrine-orm kohana

我对教条有问题。 我有一个文件管理器,包含文件夹和文件。

现在我想将组保存到目录或单个文件中。 对于单个项目,它可以工作。

但是,如果我想以递归方式保存组权限,它将无法工作。 Doctrine不会抛出错误或异常。但它不保存子目录中子目录和文件的更改。

这是我的模特:

http://pastebin.com/nK6MqiiS

模型Model_File_Item和Model_File_Dir都扩展了这个模型。 一切正常,直到方法“setGroupsRecursive()”想要将组保存到目录或文件。

我在文件中记录了日志..一切都很好,每个项目都会保存,但更改不会保存在数据库中,我不知道为什么。

编辑:组定义如下所示:

Model_File_Dir& Model_File_Item:

/**
 * Owning Side
 *
 * @ManyToMany(targetEntity="Model_Group", inversedBy="dirs")
 * @JoinTable(name="dir_groups",
 *      joinColumns={@JoinColumn(name="dir_id", referencedColumnName="id")},
 *      inverseJoinColumns={@JoinColumn(name="group_id", referencedColumnName="id")}
 *      )
 */
protected $groups;

,Model_Group如下所示:

/**
 * @ManyToMany(targetEntity="Model_File_Dir", mappedBy="groups")
 */
protected $dirs;

/**
 * @ManyToMany(targetEntity="Model_File_Item", mappedBy="groups")
 */
protected $files;

2 个答案:

答案 0 :(得分:1)

我认为你需要cascade operations。明智地使用双向关系(特别是使用级联操作),如herehere所述。希望这有帮助!

答案 1 :(得分:0)

要使用doctrine在数据库中保存某些内容,您需要使用entitymanager刷新它。 还要记住,在关系中你需要冲洗关系的拥有方,否则将忽略变化。

Check it!