/** * test Set nest with no specified parent data. * * The result should be the same as the input. * For an easier comparison, unset all the empty children arrays from the result * * @return void */ public function testMissingParent() { $input = array(array('id' => 1), array('id' => 2), array('id' => 3), array('id' => 4), array('id' => 5), array('id' => 6), array('id' => 7), array('id' => 8), array('id' => 9), array('id' => 10)); $result = Set::nest($input, array('idPath' => '/id', 'parentPath' => '/parent_id')); foreach ($result as &$row) { if (empty($row['children'])) { unset($row['children']); } } $this->assertEquals($input, $result); }
/** * In the event of ambiguous results returned (multiple top level results, with different parent_ids) * top level results with different parent_ids to the first result will be dropped * * @param mixed $state * @param mixed $query * @param array $results * @return array Threaded results */ protected function _findThreaded($state, $query, $results = array()) { if ($state === 'before') { return $query; } elseif ($state === 'after') { $parent = 'parent_id'; if (isset($query['parent'])) { $parent = $query['parent']; } return Set::nest($results, array('idPath' => '/' . $this->alias . '/' . $this->primaryKey, 'parentPath' => '/' . $this->alias . '/' . $parent)); } }