Cake :: 1中的Set :: nest如何工作?

时间:2012-10-09 14:36:40

标签: cakephp nested resultset

由于缺乏适当的文件,我遇到了困难 理解“Set :: nest”CakePhp函数。

如果有人能够解释一下,我将不胜感激 以及我的例子如何正确使用它。

假设我有这棵树:

array(
    (0) => array(
        'Category' => array('name' => 'Cat 1'),
        'Course' => array(
            'name' => 'Course 1'
        ),
        'Day' => array('date' => '2012-01-01')
    ),
    (1) => array(
        'Category' => array('name' => 'Cat 1'),
        'Course' => array(
            'name' => 'Course 1'
        ),
        'Day' => array('date' => '2012-01-02')
    ),
    (2) => array(
        'Category' => array('name' => 'Cat 1'),
        'Course' => array(
            'name' => 'Course 3'
        ),
        'Day' => array('date' => '2012-01-06')
    ),
    (3) => array(
        'Category' => array('name' => 'Cat 2'),
        'Course' => array(
            'name' => 'Course 2'
        ),
        'Day' => array('date' => '2012-01-02')
    ),
)

转换为:

array(
    'Cat 1' => array(
        'Course' => array(
            'name' => 'Course 1'
        ),
        'Day' => array(
            array('date' => '2012-01-01'),
            array('date' => '2012-01-02')
        ),
        'Course' => array(
            'name' => 'Course 3'
        ),
        'Day' => array(
            array('date' => '2012-01-06')
        ),
    ),
    'Cat 2' => array(
        'Courses' => array(
            'name' => 'Course 2'
        ),
        'Day' => array(
            array('date' => '2012-01-03')
        )
    ),
)

正如你所看到的那样,它是一种双重嵌套,因为“​​类别”可以有多个“课程”行,“课程”可以有多个“日”。

我可以循环浏览并手动完成。

所以第一个问题是:我可以用Set :: nest转换它吗? 如果是的话怎么样?

1 个答案:

答案 0 :(得分:0)

你所要求的是不可能的。您的数组无效。您需要更改格式以将每个类别作为嵌套数组'cat' => array(array('course 1' => ...), array('course 2' => ...))

print_r(array(
    'Cat 1' => array(
        'Course' => array(
            'name' => 'Course 1'
        ),
        'Day' => array(
            array('date' => '2012-01-01'),
            array('date' => '2012-01-02')
        ),
        'Course' => array(
            'name' => 'Course 3'
        ),
        'Day' => array(
            array('date' => '2012-01-06')
        ),
    ),
    'Cat 2' => array(
        'Courses' => array(
            'name' => 'Course 2'
        ),
        'Day' => array(
            array('date' => '2012-01-03')
        )
    ),
));

输出:

Array
(
    [Cat 1] => Array
        (
            [Course] => Array
                (
                    [name] => Course 3
                )

            [Day] => Array
                (
                    [0] => Array
                        (
                            [date] => 2012-01-06
                        )

                )

        )

    [Cat 2] => Array
        (
            [Courses] => Array
                (
                    [name] => Course 2
                )

            [Day] => Array
                (
                    [0] => Array
                        (
                            [date] => 2012-01-03
                        )

                )

        )

)