Практическое правило: Если вы обнаружили, что называете что-то «Объект», вы делаете это неправильно.
Даже если предоставленный вами код создавал то, что вы ожидаете, course.object.children
вернул бы коллекцию и курсов и папок, и не было никакого способа захватить заголовок этого списка и ожидать, что это будет папка (как вы делаете в строке 2.) Кроме того, у нас нет полиморфизма в OOP, что означает эликсир . Course
- это Course
, оно также не может быть «несколько Object
».
Поэтому вы должны отдельно построить дерево из объектов . Для этого ваша object
схема выглядит хорошо, и в интернете полно примеров того, как построить дерево.
Помимо детей, у объекта должно быть много курсов , много папок и много уроков . Тогда вызов course.object.folders
(при условии, что все предварительно загружено правильно) приведет к сбору папок , как вы хотели.
Чтобы получить доступ ко всем папкам, включая принадлежащие детям, вам нужно будет реализовать рекурсивную прогулку по дочерним элементам дерева, применимые алгоритмы выходят за рамки данной темы.
Конечно, может быть много других способов реализации подобной функциональности, но для того, что вы поделились этим, кажется самым надежным.