在命名字段约定Cakephp中,find方法不返回结果集

时间:2014-08-15 22:25:29

标签: php cakephp

我有以下cakephp查询:

$this->request->data = $this->AnsMatrixLubrication->find('all', array(
    'conditions' => array('eq_model' => $eq_model)
));

输出是这样的:

Array ( 
    [0] => Array ( 
        [AnsMatrixLubrication] => Array ( 
            [id] => 228 
            [matrix_lubrication_id] => 1 
            [eq_model] => D11 R 
            [A] => x 
            [B] => x 
            [C] => x 
            [D] => x 
            [E] => x 
            [F] => x 
            [G] => x 
            [H] => x 
            [created] => 2014-08-15 20:40:06 
            [modified] => 2014-08-15 20:40:06 
        ) 
    ) 
    [1] => Array ( 
        [AnsMatrixLubrication] => Array ( 
            [id] => 229 
            [matrix_lubrication_id] => 2 
            [eq_model] => D11 R 
            [A] => y 
            [B] => y 
            [C] => y 
            [D] => y 
            [E] => y 
            [F] => y 
            [G] => y 
            [H] => y 
            [created] => 2014-08-15 20:40:06 
            [modified] => 2014-08-15 20:40:06 
        ) 
    )
)

但我需要Cake naming convention中的输出,我的意思是[Model][0][field_name] 为什么find方法没有显示CakePHP命名约定中的输出?如果它应该是默认行为,我该如何解决?

修改
CakePHP版本:2.4.6

提前致谢。

2 个答案:

答案 0 :(得分:0)

预期格式

如图in the documentation所示,它是查找全部呼叫的预期返回格式:

  

致电查询('所有')的结果将采用以下形式:

Array
(
  [0] => Array
    (
        [ModelName] => Array
            (
                [id] => 83
                [field1] => value1
                [field2] => value2
                [field3] => value3
            )

        [AssociatedModelName] => Array
            (
                [id] => 1
                [field1] => value1
                [field2] => value2
                [field3] => value3
            )

    )
)

表单字段和查找调用不是同一件事

docs you've linked to用于表单字段的命名约定(强调添加):

  

如果您需要使用相同的字段名称指定多个字段,从而创建一个可以使用saveAll()一次性保存的数组,请使用以下约定:

echo $this->Form->input('Modelname.0.fieldname');
echo $this->Form->input('Modelname.1.fieldname');

这没有引用find-all返回的数据结构(尽管例如,如果发布了一条关于发表了多条评论的评论 - 评论数据将采用您当前期望的格式)。

答案 1 :(得分:0)

以下链接解决了我的问题。

http://nuts-and-bolts-of-cakephp.com/2008/10/27/editing-multiple-records-with-saveall/

使用函数Set::combine(),我可以将find('all')输出转换为表单字段约定。

非常感谢你的帮助。