【问题标题】:How does Set::nest in Cakephp 2 works?Cakephp 2 中的 Set::nest 是如何工作的?
【发布时间】:2012-10-09 14:36:39
【问题描述】:

由于缺乏适当的文件,我遇到了困难 了解“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 转换它吗 如果是的话怎么做?

【问题讨论】:

    标签: cakephp nested resultset


    【解决方案1】:

    你要求的是不可能的。您的数组无效。您需要更改格式以将每个类别作为嵌套数组'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
                            )
    
                    )
    
            )
    
    )
    

    【讨论】:

    • 所以你告诉我,我需要按照我的要求去做,对吧?问题是:“Cakephp 2 中的 Set::nest 是如何工作的?”
    • 不,我告诉你,你需要的输出是不可能的。
    猜你喜欢
    • 2017-12-08
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多