0

我对教义有疑问。我有一个包含文件夹和文件的文件管理器。

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

但是,如果我想递归保存组权限,它将无法正常工作。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;
4

2 回答 2

1

我认为您需要为此进行级联操作明智地考虑使用此处此处描述的双向关系(尤其是使用级联操作)。希望这可以帮助!

于 2012-04-06T14:47:26.550 回答
0

要使用原则将某些内容保存在数据库中,您需要使用 entitymanager 刷新它。还要记住,在关系中,您需要刷新关系的拥有方,否则更改将被忽略。

核实!

于 2012-04-05T09:54:32.180 回答