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 回答