php - CakePHP 返回 find ('all' ) 使用 'id' 作为数组索引

标签 php arrays cakephp data-structures find

因此,我尝试使用“产品”的 ID 作为每个产品的索引键来返回一个查找“全部”数组。

通常它返回:

array(
    (int) 0 => array(
        'Product' => array(
            'id' => '1232',
            'category_id' => '330',
            'name' => 'Product #1',
        )
    ),
    (int) 1 => array(
        'Product' => array(
            'id' => '1245',
            'category_id' => '310',
            'name' => 'Product #2',
        )
    ),
    (int) 2 => array(
        'Product' => array(
            'id' => '1248',
            'category_id' => '312',
            'name' => 'Product #3',
        )
    )
)

而理想情况下我希望它返回:

array(
    (int) 1232 => array(
        'Product' => array(
            'id' => '1232',
            'category_id' => '330',
            'name' => 'Product #1',
        )
    ),
    (int) 1245 => array(
        'Product' => array(
            'id' => '1245',
            'category_id' => '310',
            'name' => 'Product #2',
        )
    ),
    (int) 1248 => array(
        'Product' => array(
            'id' => '1248',
            'category_id' => '312',
            'name' => 'Product #3',
        )
    )
)

这可能吗?我该怎么做?

我有一个记录的 Excel 电子表格,我需要将 ID 与之匹配,所以目前我让它迭代每个电子表格行并执行“第一次”查找以获得任何结果,然后在结果出现时对其采取行动。

它有效,但记录集已增长到超过 28000,因此对每个记录集执行一次查找会产生明显的开销。

如果我可以简单地在“查找”操作中执行此操作,那就太好了,否则,我们将不胜感激任何显着的性能提升。

最佳答案

你可以在find all之后得到这样的结果:

$result = Hash::combine($data, '{n}.Product.id', '{n}.Product');

其中 $data 是 find all 的结果。

关于php - CakePHP 返回 find ('all' ) 使用 'id' 作为数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27147482/

相关文章:

php - Cakephp 和 Laravel 共存

php - Github API 列出所有存储库和 repo 的内容

java - 我如何从一个方法返回 2 个值

arrays - Bash 数组名称选择

node.js - 像 CakePHP 一样在 Node.js 中制作 token ?

php - 使 PHPdoc 包含 CakePHP .ctp 文件

php - XPath查询结果顺序

php - 将一个常数(不是变量)插入到 'heredoc'

c# - 如何使用 wpf webbrowser 将数据发布到 Web 服务器

java - 存储对不同类的对象的引用