我对教条有问题。 我有一个文件管理器,包含文件夹和文件。
现在我想将组保存到目录或单个文件中。 对于单个项目,它可以工作。
但是,如果我想以递归方式保存组权限,它将无法工作。 Doctrine不会抛出错误或异常。但它不保存子目录中子目录和文件的更改。
这是我的模特:
模型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;
答案 0 :(得分:1)
我认为你需要cascade operations。明智地使用双向关系(特别是使用级联操作),如here和here所述。希望这有帮助!
答案 1 :(得分:0)
要使用doctrine在数据库中保存某些内容,您需要使用entitymanager刷新它。 还要记住,在关系中你需要冲洗关系的拥有方,否则将忽略变化。