2

タイトルがわかりにくいことをお詫びします。質問の言い方に少し戸惑いました。

私はCakePHPを初めて使用しますが、クックブック/チュートリアルをうまくフォローしていますが、答えが見つからないものに出くわしました。

私の構造は次のとおりです。

'Invoices' hasMany 'InvoiceHistory'
'InvoiceHistory' belongsTo 'InvoiceHistoryDeliveryStatus'

これにより、請求書には複数の請求書履歴を含めることができ、各履歴には名前にリンクする配信ステータスIDが含まれます。

請求書ビュー(index.ctp)で、すべての請求書のリストを表示していますが、最新の配信ステータス名を表示したいと思います(InvoiceHistoryには日付フィールドが含まれているため、並べ替えることができます)。これにより、「現在の配信ステータス」が表示されます。私がする時:

$this->set('invoices', $this->Invoice->find('all'));

配信ステータス名を提供するために返される内容については十分に深く理解されていません。また、結果内で最新の請求履歴のみを返す方法を推測していません。私はMYSQLクエリを使用してこれを手動で行う方法を知っていますが、それはおそらくまったく間違っていると思いました。

CakePHPの慣習に従いながらこれを行う正しい方法は何ですか?

4

2 に答える 2

1

私の知る限り、 Containableの動作を確認する必要があると思います。

于 2012-06-29T11:03:29.473 に答える
1

封じ込め可能なものを使用する

$this->Invoice->Behaviors->attach('Containable');

$this->set('invoices', $this->Invoice->find('all', array(
    'contain' => array(
        'InvoiceHistory' => array(
            'InvoiceHistoryDeliveryStatus'
        )
    )
));
于 2012-06-29T11:09:13.070 に答える