0

データベースの配列構造とそのいくつかのフィールドをコントローラーから取得しようとしています。必要なフィールドは次のとおりです: Document.id、Document.name、Document.submission_date、および結合された Requester.name: Requester.id = Document.requester_id

私のコントローラーで:

方法 A:

$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 の初心者です (しかし、今のところ本当に気に入っています!) ありがとうございます!

4

2 に答える 2

2

find('all')a の代わりに 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 に答える