CakePHP与Containable中的find(' list')结果格式相同

时间:2015-09-15 02:03:44

标签: php cakephp containable

我正在寻找一种方法,让使用Containable行为的查询结果的格式与find('list')结果相同。 E.g:

$this->ModelA->find('all', array(
    'contain' => array(
        'ModelB' => array(
            'ModelC' => array(
                // This does NOT work but I need ModelC's fields to be formatted as an associative array where IDs are keys and names are values
                'fields' => array('id' => 'name')
            )
        )
    )
));

注意:将递归设置为1或2而不是使用Containable 一个选项,除非{{1}没有可用的解决方案}}

2 个答案:

答案 0 :(得分:1)

我不确定您是否可以以所需的格式返回返回的包含数据,但您可以在找到后更改它。 Cake实际构建<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div class="jumbotron"> <form id="form" action="http://localhost:9767/ProspectWorxService.svc/SaveUploadedFile?Id=" name="myform" method="post" enctype="multipart/form-data" class="dropzone" id="dropzoneForm"> <div class="fallback"> <input name="file" type="file" multiple /> <input type="submit" value="Upload" /> </div> </form> </div>的回报的方式是使用The List of Bar Items and Links。因此,您可以使用此更改返回的数据,使数据外观列表为find('list')返回: -

find('list')

这将返回: -

$data = [
    [
        'id' => 1,
        'name' => 'Foo'
    ],
    [
        'id' => 2,
        'name' => 'Bar'
    ]
];
$results = Hash::combine($data, '{n}.id', '{n}.name');

由于您没有提供关联,因此不确定您的[ 1 => 'Foo', 2 => 'Bar' ] 数据是什么样的,但您猜测可以执行以下操作: -

find('all')

答案 1 :(得分:0)

$这 - &GT; ModelA-&GT; Behaviors-&GT;负载( '中可容纳');

$ this-&gt; ModelA-&gt; find('all',array(     'contains'=&gt;数组('ModelB','ModelC'=&gt;数组('fields'=&gt;数组('id','name'))        )     ) );

请确保您已创建模型

的关联