私はCourse
,Subject
、Chapter
のCakePHP 3.xのデータベースを持っています。それらの間の関係は次のように:CakePHP 3.x mapReduceが複数のレコードを照会できない
Courses belongsToMany Subjects
Courses belongToMany Chapters
Subjects belongToMany Courses
Subjects hasMany Chapters
Subjects hasMany ChildSubjects
Subjects belongsTo ParentSubjects
Chapters belongToMany Courses
Chapters belongTo Subjects
を私はSubjects
、Subjects.ChildSubjects
、Subjects.Chapters
と同じコースを持つSubjects.ChildSubjects.Chapters
を含むと、すべてのCourses
を取得する必要があります。私はmapReduce
のカスタムファインダーを開発しました。これは、含まれているすべてのものを削除/設定解除/変更し、同じものではない関連するものも含みます。 1つのコースがコースのクエリによって戻ってくるときはうまくいく。しかし、複数のコースを返すと、Subjects.ChildSubjects
とSubjects.ChildSubjects.Chapters
が正しく返されません。
Cookbookからの理由を見つけたので、mapReduce()
メソッドはデータベースからフェッチされた結果を処理する方法です。そのため、あるコースの結果を削除/設定解除/変更すると、後で別のコースの影響を受けます。
私の場合、どのように問題を解決することができますか?私の場合、formatResults
は最善の方法でしょうか?