У меня есть база данных с 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
Мне нужно, чтобы получить все Courses
с содержащий Subjects
, Subjects.ChildSubjects
, Subjects.Chapters
и Subjects.ChildSubjects.Chapters
, которые имеют один и тот же курс. Я разработал пользовательский поиск с mapReduce
, который удаляет/отменяет/изменяет все содержащиеся, а также содержит ассоциированные, которые не являются тем же курсом. Это отлично работает, когда один курс возвращается по курсу. Но, когда он вернул несколько курсов, тогда Subjects.ChildSubjects
и Subjects.ChildSubjects.Chapters
не возвращены должным образом.
Я нашел причину из Cookbook, mapReduce()
метод - это способ обработки результатов после их получения из базы данных. Вот почему, когда я удаляю/отменю/изменяю результат для одного курса, он позже будет затронут другим курсом.
Как я могу решить/пропустить эту проблему в моем случае? formatResults
будет лучшим подходом в моем случае?