我为这个令人困惑的标题道歉,我对如何提出问题感到有点难过。
我是CakePHP的新手,但是很好地跟进了食谱/教程,但是我遇到了一些我找不到答案的东西。
我的结构如下:
'Invoices' hasMany 'InvoiceHistory'
'InvoiceHistory' belongsTo 'InvoiceHistoryDeliveryStatus'
因此,发票可以有多个发票历史记录,每个历史记录都包含一个链接到名称的递送状态ID。
在发票视图(index.ctp)上,我显示所有发票的列表,但希望显示最近的交货状态名称(InvoiceHistory包含日期字段,以便对其进行排序) - 从而显示“当前交货状态” ”。 当我这样做时:
$this->set('invoices', $this->Invoice->find('all'));
它返回的内容不够深入,无法向我提供交付状态名称,也没有推断出仅在结果中返回最新的发票历史记录的方法。我知道如何使用MYSQL查询手动执行此操作,但我认为这可能是完全错误的。
遵循CakePHP约定的正确方法是什么?
答案 0 :(得分:1)
据我所知,我认为你应该查看Containable behavior。
答案 1 :(得分:1)
$this->Invoice->Behaviors->attach('Containable');
$this->set('invoices', $this->Invoice->find('all', array(
'contain' => array(
'InvoiceHistory' => array(
'InvoiceHistoryDeliveryStatus'
)
)
));