CakePHP通过两个关联显示字段名称

时间:2012-06-29 09:06:25

标签: mysql cakephp

我为这个令人困惑的标题道歉,我对如何提出问题感到有点难过。

我是CakePHP的新手,但是很好地跟进了食谱/教程,但是我遇到了一些我找不到答案的东西。

我的结构如下:

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

因此,发票可以有多个发票历史记录,每个历史记录都包含一个链接到名称的递送状态ID。

在发票视图(index.ctp)上,我显示所有发票的列表,但希望显示最近的交货状态名称(InvoiceHistory包含日期字段,以便对其进行排序) - 从而显示“当前交货状态” ”。 当我这样做时:

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

它返回的内容不够深入,无法向我提供交付状态名称,也没有推断出仅在结果中返回最新的发票历史记录的方法。我知道如何使用MYSQL查询手动执行此操作,但我认为这可能是完全错误的。

遵循CakePHP约定的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

据我所知,我认为你应该查看Containable behavior

答案 1 :(得分:1)

使用Containable

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

$this->set('invoices', $this->Invoice->find('all', array(
    'contain' => array(
        'InvoiceHistory' => array(
            'InvoiceHistoryDeliveryStatus'
        )
    )
));