php - CakePHP 2 find 方法与 JOIN 的问题

标签 php mysql cakephp cakephp-2.0

I am facing an issue with CakePHP Find method with JOIN and bindModel.

I have 2 tables, Customer and Order. Order table has all order records for Customer.

现在,在一个查询中,我需要包含应付金额或总订购金额的客户记录

当我尝试使用此查询时,它仅返回一条记录。

$this->Customer->bindModel(['hasOne'=>['Order'=>['fields'=>['SUM(Order.due_amount) as due']]]],false);

$data = $this->Customer->find('all',[ 'conditions' => [ 'Customer.type' => 2,'Customer.status'=>1] ]);

第二,当我尝试使用 JOIN 时,仍然没有得到正确的结果

$data = $this->Customer->find('all',[
'conditions' => [ 'Customer.type' => 2,'Customer.status'=>1],
'joins' =>[[ 'table' => 'orders', 'alias' => 'Order',
'type' => 'RIGHT', /*LEFT/INNER*/
'fields'=>['SUM(Order.due_amount) as due'],
'conditions' => [ 'Order.customer_id = Customer.id']]]]);

使用这两种方法我都没有得到正确的结果

我需要这样的结果

Array( 
            [0] => Array ( [Customer] => Array ( /*all Customer table fields */ ) [Order] => Array ( [due] => 125.25))
            [1] => Array ( [Customer] => Array ( /*all Customer table fields */ ) [Order] => Array ( [due] => 10.00))
            [2] => Array ( [Customer] => Array ( /*all Customer table fields */ ) [Order] => Array ( [due] => 500.10))
.... so on 
            )

最佳答案

您可以使用以下查询

$joins = array(
        array('table' => 'orders',
            'alias' => 'Order',
            'type' => 'INNER',
            'conditions' => array(
                'Order.customer_id = Customer.id',
            )
        )
    );
    $conditions = [];
    $conditions[] = ['Customer.type' => 2];
    $conditions[] = ['Customer.status'=>1];
    $this->Customer->virtualFields['total_due'] = "sum(Order.due_amount)";
    $data_array = $this->Customer->find('all', ['conditions' => $conditions, 'group' => 'Customer.id', 'joins' => $joins, 'fields' => ['Customer.*', 'Customer.total_due']]);

关于php - CakePHP 2 find 方法与 JOIN 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55757093/

相关文章:

实例化时未调用 PHP 构造函数

c# - 使用mysql调试c#代码的正确方法

MySQL如何在两个字段上连接表

.htaccess - 如何禁用单个文件夹的 CakePHP 重写路由,以便它可以用作第二个应用程序的位置?

php - cakephp中多个模型的单一分页

PHP 静态变量未按预期工作

php - 使用php从数据库获取数据但只返回一个结果

php - 对具有相同 ID 的所有文本字段只读

php - 稍后发布帖子

php - 如何将 i18n 用于一种语言 cakephp