使用Cake php本身将蛋糕php查找查询结果更改为具有id值的数组键

时间:2012-03-30 15:29:15

标签: cakephp cakephp-1.3

如何使用cake php将蛋糕php查找查询结果数组键更改为id值?

$videos = $this->Video->find('all');

print_r($videos);

数组将是

Array
(
    [0] => Array
        (
            [Video] => Array
                (
                    [id] => 6
                )

        )

    [1] => Array
        (
            [Video] => Array
                (
                    [id] => 8
                )

        )
)

如何更改ID值如下所示的数组键

Array
(
    [6] => Array
        (
            [Video] => Array
                (
                    [id] => 6
                )

        )

    [8] => Array
        (
            [Video] => Array
                (
                    [id] => 8
                )

        )
)

蛋糕本身有可能吗?

3 个答案:

答案 0 :(得分:8)

如果您确实需要采用此格式的数据,则可以使用afterFind来设置ID,也可以使用CakePHP的Hash / Set类。

试试这个(因为CakePHP 2.2)

$videos = $this->Video->find('all');
$videos = Hash::combine($videos, '{n}.Video.id', '{n}');
debug($videos);

或者对于早于2.2的CakePHP

$videos = $this->Video->find('all');
$videos = Set::combine($videos, '{n}.Video.id', '{n}');
debug($videos);

有关详细信息,请参阅http://book.cakephp.org/2.0/en/core-utility-libraries/hash.html

如果您可能告诉我们为什么您需要采用这种格式的数据,我们也可以建议更好的方法,因为不会以这种方式更改数据。

答案 1 :(得分:1)

不,不是。您可以在afterFind()中更改结果,查看book.cakephp.org,但我只是简单地使用数据。我认为没有任何理由增加这种额外的开销和复杂性,因为无论如何都可以使用id。

答案 2 :(得分:1)

在CakePHP 2.2中你可以使用

$videos = $this->Video->find('list');
pr($videos);

这将打印id为key的每个值。

我不知道你是否可以在1.3中使用它,但你可以试试......