0

我正在尝试从我的控制器中获取数据库的数组结构及其一些字段。我想要的字段是:Document.id、Document.name、Document.submission_date,以及与之连接的 Requester.name:Requester.id = Document.requester_id

在我的控制器中:

方法一:

$documents = $this->Document->find('list', array('fields' => array('Document.name', 'Requester.name', 'Document.submission_date')));

似乎找不到“Requester.name”

方法B:

$documents = $this->Document->find('list', array('fields' => array('Document.name', 'Requester.name', 'Document.submission_date'), 'recursive' => 0));

给我:

    array(
        '2012-08-17' => array(
            'Document_A' => 'Requester_Z'
        ),
        '2012-08-05' => array(
            'Document_B' => 'Requester_Y'
        ),
        '2012-07-09' => array(
            'Document_C' => 'Requester_X'
        )
    )

但我需要它的格式:

    array(
        (int) 0 => array(
            'id' => '16'
            'submission_date' => '2012-08-17'
            'name' => 'Document_A',
            'requester_name' => 'Requester_Z'
        ),
        (int) 1 => array(
            'id' => '41'
            'submission_date' => '2012-08-05'
            'name' => 'Document_B',
            'requester_name' => 'Requester_Y'
        ),
        (int) 2 => array(
            'id' => '213'       
            'submission_date' => '2012-07-09'
            'name' => 'Document_C',
            'requester_name' => 'Requester_X'
        ),
    )

在通过 2.0 CakeBook 和 StackOverflow 之后,我似乎无法弄清楚......任何帮助将不胜感激?抱歉 - 我仍然是 CakePHP 的 n00b(但到目前为止真的很喜欢它!)谢谢!

4

2 回答 2

2

您需要执行 afind('all')而不是 a find('list'),并且可以fields像已经使用的那样使用密钥来限制返回的信息量。

它不会完全按照您需要的数据返回,每个字段都将位于它所属模型的键中 - 如果您真的需要这种格式的数据,您可以使用虚拟字段、自定义查找或修改数据的 afterFind 回调。

查找列表通常用于id => label格式化数组。

于 2012-10-03T02:38:15.023 回答
1

你可以试试这个:

$documents = $this
                ->Document-
                >find('all', 
                        array(
                            'fields' => array('Document.name', 'Requester.name', 'Document.submission_date'),
                            'joins' => array(
                                'table' => 'requesters',
                                'alias' => 'Requester',
                                'type' => 'left',
                                'conditions' => array('Requester.id = Document.requester_id')
                            )
                        )   
                    );
于 2012-10-03T05:34:40.070 回答