1

コントローラーに次のコードがあります。Claim.numberとを除くすべてのフィールドで並べ替えることができますPayer.abbr。それがなぜなのか誰にもわかりますか?

$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')
        ),
    array(
        'table' => 'exception_workflow_logs',
        'alias' => 'ExceptionWorkflowLog',
        'conditions' => array('ExceptionWorkflowLog.exception_id = PaymentException.id')
    )
    ),
    'conditions' => $conditions
);

すべてのフィールドは、次のようにビューで実行されました。

<?php echo $this->Paginator->sort('Claim', 'Claim.number'); ?>

Claim.numberURL に表示されますが、またはでソートされることはありませんPayer.abbr。なぜそうなるのかわかりません。

私の条件配列には次のものがあります。

array
  0 => string 'Procedure.difference_amount < 0' (length=31)
  1 => string 'PaymentException.finalized IS NULL' (length=34)

条件配列は、適切に並べ替えられた列でも同じままであることに注意してください。

4

1 に答える 1

1

join と containerable を一緒に使用することはできません。包含を削除し、結合を使用するか、2 番目のクエリで包含のレコードをフェッチする必要があります。

于 2012-10-31T10:26:09.993 に答える