CHỈNH SỬA:Với tất cả dữ liệu mới, tôi hiểu rõ ràng những gì bạn đang cố gắng đạt được.
Vì vậy, tôi đã chỉnh sửa chức năng cũ của mình, đây là một chức năng mới sẽ hoạt động chặt chẽ trong mã của bạn. Hãy cho tôi biết để tôi có thể điều chỉnh nếu cần.
public function setCategories($user_id)
{
$api = new ApiCategory($user_id);
$cats = $api->getCategories(); // retrieves structure above
$newCats = null;
self::recursiveCatTree($newCats, $cats);
$this->categories = $newCats;
$this->save(); // save the entire array of embedded documents
if($this->getErrors())
var_dump($this->getErrors);
}
public static function recursiveCatTree(&$result, $parent)
{
$children = $parent['children'];
//we unset the children so we dont have manually set every other variable
unset( $parent['children']);
$result = new Category();
$result->attributes = $parent;
//then loop the children, if no children it wont loop
// so it will just be an empty array
foreach($children as $child)
{
$baby = null;
self::recursiveCatTree($baby, $child);
$result->children[] = $baby;
}
}