CakePHP使用Hash来准备模型数组以进行保存

时间:2014-07-04 17:17:03

标签: php arrays cakephp

我想知道如何使用CakePHP Hash functions来实现以下目标: 这是之前的数组(插件存储在Session中):

$Data = array(
'add' => array(
    'Certificate' => array(
        'name' => '',
        'entity_id' => '1',
        'state_id' => '18',
        'domicile' => '',
        'formation_date' => array(
           'month' => '',
           'day' => '',
           'year' => ''
        )
    )
),
'add2' => array(
    'Certificate' => array(
        'filing_fees' => '82'
    )
)
)

这是后面的数组。我正在重新格式化它以调用Certificate-> save()。我删除了顶级并合并了证书模型。

$Data = array(
'Certificate' => array(
    'name' => '',
    'entity_id' => '1',
    'state_id' => '18',
    'domicile' => '',
    'formation_date' => array(
        'month' => '',
        'day' => '',
        'year' => ''
    ),
    'filing_fees' => '82'
)
)

这是我目前的代码:

$processed = array();
    foreach ($Data as $k => $array1) {
        foreach ($array1 as $array1k => $array2) {
            if (!isset($processed[$array1k])) {
                $processed[$array1k] = array();
            }
            foreach ($array2 as $a2k => $a2v) {
                $processed[$array1k][$a2k] = $a2v;
            }
        }
    }

我的工作原理,但它不是非常“Cake-ish”,当我需要准备数据以保存更复杂的模型关系时(例如HABTM saveall),肯定会引起问题。

在发布之前,我尝试了Hash::combineHash::mergearray_merge_recursive()及其组合。我理解PHP逻辑,但我找不到具有类似逻辑的CakePHP函数。

第一步是合并Model,然后第二步是删除键('add,'add2')。我得到的最接近的是Hash::combine,但没有办法引用$keyPath {s} of the Model,跳过数组的第一级('add','add2')。

如果你能指出我推荐Hash或其他CakePHP功能的方向,我很乐意采取下一步措施。

0 个答案:

没有答案