0

我有一个相当复杂的问题(无论如何对我来说),我不知道下一步该做什么。

首先,我将为您介绍该项目的一些背景。这个项目是让我记录客户并列出与这些客户相关的所有服务。我有三个表: 客户产品 CustomerRecordHub

Customer 表和 Products 表包含有关其各自方的信息。CustomerRecordHub 表基本上将这两个表链接在一起。因此,该表将包含客户 ID 和与该客户关联的产品。

因此,如果客户的 ID 为 1,并且该客户拥有三种产品,那么在 Products UD 字段中他们将拥有 1、2 和 3。因此该表将是:

身份证 | 公司ID | 产品ID
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3

我使用 CustomerRecordHub 表作为主要参考表,然后从该表中查询 Customer 和 Product 表。我为 CustomerRecordHub 设置了以下关系:

<?php
public $belongsTo = array(
    'Customer' => array(
        'className' => 'Customer',
        'foreignKey' => 'id',
    ),
    'Product' => array(
        'className' => 'Product',
        'foreignKey' => 'id',
    )
);
?>

我可以查询此表并从其他两个链接表中检索我想要的所有记录,而不会出现任何问题。

现在,我确实遇到的问题是,我想在一个页面上列出我拥有的所有客户,然后我想显示每个客户拥有多少产品。因此,如果我们使用我给出的示例,对于 ID 为 1 的客户,有三个产品链接到该客户。所以在页面上我想显示客户详细信息,在“产品”标题下我想获得显示的产品数量(在这种情况下应该显示数字 3)。

通常我会在 SQL 中使用 COUNT 命令,但我试图使代码尽可能严格地遵守 CakePHP 自己的约定,并且不在代码中使用原始 SQL。

目前,我正在使用的代码是这样的:

<?php

$this->loadModel('Customerrecordhub');

$customers = $this->Customerrecordhub->find('all', 'recursive' => 2));
$this->set('customers', $customers);

?>

在 HTML 中,我将所有数据泵入 foreach 循环内的表中。

我应该用什么来计算记录?

4

1 回答 1

1

该方法有一个特殊count参数find,但这可能不符合您的需求,因为您想要显示的不仅仅是计数的产品。

最好在方法COUNT fields参数中find定义。所以:

'fields' => array('Model.field1', 'COUNT(Model.field2) AS products_count')
于 2012-04-19T10:51:38.167 回答