1

ページネーションを実行しているクエリがあります。このクエリには、最後の「ExceptionWorkflowLog」のコピーに追加して「LastWorkflowLog」と呼ぶ afterfind メソッドを持つモデル (「PaymentException」) が含まれています。

ページネーションに渡されるクエリ:

    $this->paginate = array(
        'fields' => array(
            'PaymentException.*', 'Procedure.id', 'Procedure.cpt',
            'Procedure.expected_amount', 'Procedure.allowed_amount', 'Procedure.difference_amount',
            'Claim.id', 'Claim.number', 'Payer.abbr'
        ),
        'limit' => 50,
        'joins' => array(
            array(
                'table' => 'procedures',
                'alias' => 'Procedure',
                'conditions' => array('Procedure.id = PaymentException.procedure_id')
            ),
            array(
                'table' => 'claims',
                'alias' => 'Claim',
                'conditions' => array('Claim.id = Procedure.claim_id')
            ),
            array(
                'table' => 'payers',
                'alias' => 'Payer',
                'conditions' => array('Payer.id = Procedure.payer_id')
            ),
            array(
                'table' => 'groups',
                'alias' => 'Groups',
                'conditions' => array('Groups.id = Claim.group_id')
            )
        ),
        'conditions' => $conditions,
        'contain' => array('ExceptionWorkflowLog')
    );

結果の配列 (「PaymentException」、「ExceptionWorkflowLog」、および「LastWorkflowLog」の両方を組み合わせたクエリから) は、次のようになります。

0 =>
  'PaymentException' => 配列 (フィールドと値),
  'ExceptionWorkflowLog' => 配列 (ExceptionWorkflowLogs の),
  'LastWorkflowLog' => 配列 (最後にインデックス付けされた ExceptionWorkflowLog のフィールドと値)
1 => ...

ExceptionWorkflowLog は、PaymentException.id によって PaymentException にマップされます。これは多対 1 の関係です (したがって、結果の配列は ExceptionWorkflowLog の下にあります)。

paginate を使用して、最後にインデックス付けされた ExceptionWorkflowLog または LastWorkflowLog の「更新された」フィールドを並べ替えたいと思います。

ページネーションでこれを行う方法はありますか?現在、「LastWorkflowLog.updated」を指すようにテーブルの見出しを設定すると、クエリは「LastWorkflowLog」が何であるかを認識しないため、false を返します。

4

1 に答える 1

0

これには数百回のビューがあるので、戻ってきて自分がしたことを投稿しようと思いました. CakePHP の結合の処理は、まったくひどいものです。結合を使用せず、contains を使用するようにクエリを書き直しました。それで解決したようです。私は汚いと感じます。

于 2013-02-25T07:40:16.430 に答える