0

我正在使用Cakephp 2.2.4,我需要检索属于用户的 Lead 列表(id = 106)。

查询的结果是:

array(
    (int) 0 => array(
        'Lead' => array(
            'id' => '6',
            'user_id' => '106',
            'date' => '2012-12-31 22:15:23',
            'ip' => '127.0.0.1',
            'service_id' => '1',
            'location' => 'Rome',
            'message' => 'Message Message',
            'telephone' => null,
            'active' => null
        ),
        'User' => array(
            'id' => '106',
            'email' => 'daje@daje.it',
            'pwd' => '0433c024cb08be13000d59a347e640482843f46f177e95749dc6599c259617fd3491dcb940b47693cbbc7f65a2cc5ef62deca2e600c1be133ad54170f7d1fbd1',
            'role_id' => '3',
            'active' => '1'
        ),
        'Service' => array(
            'id' => '1',
            'name' => 'Primo servizio'
        ),
        'Estimate' => array(
            (int) 0 => array(
                'id' => '1',
                'lead_id' => '6',
                'user_id' => '106'
            )
        )
    )
)

它看起来不错,但我需要计算估计值(估计数组),我想检索估计值的数量,而不是包含所有字段的数组(估计值表)。

我该怎么做?

我需要 :

如图所示的引线阵列

如图所示的用户数组

如图所示的服务数组

估计(仅估计的总数......在这种情况下1

查找非常简单:

$options = array('conditions' => array('User.id' => 106));

debug($this->Lead->find('all', $options));
4

2 回答 2

3

尝试这样的事情,不是 100% 确定它会起作用,但如果不是,我建议您搜索 cakephp 文档以检索您的数据:

$options = array(
    'fields' => array('Lead.*', 'User.*', 'Service.*', 'count(Estimate.id)'),
    'conditions' => array('User.id' => 106)
);
于 2013-01-09T17:55:14.207 回答
0

如果不深入到 Cake ORM 的内部,假设您不需要在查询时立即执行此操作,那么您不能在获取count后以编程方式获取估计数组的值吗?

http://php.net/manual/en/function.count.php

$leads = $this->Lead->find('all',$options);
foreach($leads as $lead){
  //get the number of estimates for every lead result
  $lead_num = count($lead['Estimate']);
}

或者,您可以手动为此获取编写一个连接查询,并使用 Cake Model 类的query方法执行它。在不知道您的表模式和模型关系的细节的情况下,很难给出关于如何构造查询的细节,但这应该不会太难,只需查看您的表规范并为每个具有给定 ID的每个提取一个 sqlCOUNT语句。Estimate

于 2013-01-09T18:00:00.173 回答