【问题标题】:CakePHP Displaying Field Names via Two AssociationsCakePHP 通过两个关联显示字段名称
【发布时间】:2012-06-29 19:09:13
【问题描述】:

我为这个令人困惑的标题道歉,我对如何表达我的问题感到有些困惑。

我是 CakePHP 的新手,但是我很好地阅读了食谱/教程,但是我遇到了一些我找不到答案的问题。

我的结构如下:

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

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

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

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

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

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

【问题讨论】:

    标签: mysql cakephp


    【解决方案1】:

    使用Containable

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

    【讨论】:

    • 这是一个非常简洁的功能!!感谢您的帮助 - 就像一个魅力。
    【解决方案2】:

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

    【讨论】:

    • 感谢您的回答 Poyan - 可包含的行为正是我想要的。
    猜你喜欢
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多