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

doctrine を使用してデータベースに何かを保存するには、entitymanager を使用してフラッシュする必要があります。リレーションでは、リレーションの所有側をフラッシュする必要があることにも注意してください。そうしないと、変更が無視されます。

それをチェックしてください!

于 2012-04-05T09:54:32.180 に答える