CakePHP查找最近日期

CakePHP查找最近日期,php,mysql,sql,cakephp,select,Php,Mysql,Sql,Cakephp,Select,编辑:我想出来了。在底部查看我的解决方案 我正在尝试查询最近的activity.date不在过去30天和未来30天之间的所有行。换句话说,如果他们上个月有活动,不要选择他们。下面是发送给find()的数组,它现在是这样的: 'Declined' => array( 'conditions' => array( 'Program.deal_status' => 'declined', "Pro

编辑:我想出来了。在底部查看我的解决方案

我正在尝试查询最近的activity.date不在过去30天和未来30天之间的所有行。换句话说,如果他们上个月有活动,不要选择他们。下面是发送给find()的数组,它现在是这样的:

'Declined' => array(
            'conditions' => array(
                'Program.deal_status' => 'declined',
                "Program.date_submitted > DATE_SUB(CURDATE(), INTERVAL 60 DAY)",
                'Activity.date NOT BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) and DATE_ADD(CURDATE(), INTERVAL 30 DAY)',
            ),
            'joins' => array(
                array(
                    'table' => 'programs',
                    'alias' => 'Program',
                    'type' => 'LEFT',
                    'conditions' => array(
                        'Program.customer_id = Customer.customer_id'
                    )
                ),
                array(
                    'table' => 'activities',
                    'alias' => 'Activity',
                    'type' => 'LEFT',
                    'conditions' => array(
                        'Activity.customer_id = Customer.customer_id',
                    )
                ),
            ),
            'order' => array(
                'Program.date_submitted DESC',

            ),
            'group' => array(
                'Customer.customer_id',
            ),
            'fields' => array(
                'Customer.customer_id',
                "CONCAT_WS(' ', CustomerPersonalInformation.first_name, CustomerPersonalInformation.last_name) AS full_name",
                'CustomerContactInformation.email',
                'Program.date_submitted',
                'Program.underwriters_notes',
                'Activity.date',
            )
        )
我试过做MAX(Activity.date),但一点运气都没有。我有点想这和连接有关。由于可以有许多活动与单个客户id关联,我认为它只是加入了它可以找到的第一个活动行。我不知道如何使它选择最近的activity.date

蛋糕版本是2.4.5

谢谢,非常感谢您的帮助

解决方案:

'Declined' => array(
            'conditions' => array(
                'Program.deal_status' => 'declined',
                "Customer.sales_associate {CONDITION}",
                "Program.date_submitted > DATE_SUB(CURDATE(), INTERVAL 60 DAY)",
                'Customer.store {STORE_CONDITION}',
            ),
            'joins' => array(
                array(
                    'table' => 'programs',
                    'alias' => 'Program',
                    'type' => 'LEFT',
                    'conditions' => array(
                        'Program.customer_id = Customer.customer_id'
                    )
                ),
                array(
                    'table' => 'activities',
                    'alias' => 'Activity',
                    'type' => 'LEFT',
                    'conditions' => array(
                        'Activity.customer_id = Customer.customer_id',
                    )
                ),
            ),
            'order' => array(
                'Program.date_submitted DESC',
                "MAX(Activity.date) ASC"
            ),
            'group' => array(
                'Activity.customer_id HAVING most_recent NOT BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) and DATE_ADD(NOW(), INTERVAL 30 DAY)'
            ),
            'fields' => array(
                'customer_id' => 'Customer.customer_id',
                'Customer' => "CONCAT_WS(' ', CustomerPersonalInformation.first_name, CustomerPersonalInformation.last_name) AS full_name",
                'Email' => 'CustomerContactInformation.email',
                'Program Date' => 'Program.date_submitted',
                'Underwriter notes' => 'Program.underwriters_notes',
                'Last Activity Date' => 'Activity.date',
                'hidden' => 'MAX(Activity.date) AS most_recent'
            )
        ),
'Declined' => array(
        'conditions' => array(
            'Program.deal_status' => 'declined',
            "Customer.sales_associate {CONDITION}",
            "Program.date_submitted > DATE_SUB(CURDATE(), INTERVAL 60 DAY)",
            'Customer.store {STORE_CONDITION}',
        ),
        'joins' => array(
            array(
                'table' => 'programs',
                'alias' => 'Program',
                'type' => 'LEFT',
                'conditions' => array(
                    'Program.customer_id = Customer.customer_id'
                )
            ),
            array(
                'table' => 'activities',
                'alias' => 'Activity',
                'type' => 'LEFT',
                'conditions' => array(
                    'Activity.customer_id = Customer.customer_id',
                )
            ),
        ),
        'order' => array(
            'Program.date_submitted DESC',
            "MAX(Activity.date) ASC"
        ),
        // HAVE TO GROUP BY THE DATE
        'group' => array(
            'Activity.customer_id HAVING most_recent NOT BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) and DATE_ADD(NOW(), INTERVAL 30 DAY)'
        ),
        'fields' => array(
            'customer_id' => 'Customer.customer_id',
            'Customer' => "CONCAT_WS(' ', CustomerPersonalInformation.first_name, CustomerPersonalInformation.last_name) AS full_name",
            'Email' => 'CustomerContactInformation.email',
            'Program Date' => 'Program.date_submitted',
            'Underwriter notes' => 'Program.underwriters_notes',
            'Last Activity Date' => 'Activity.date',
            'hidden' => 'MAX(Activity.date) AS most_recent'
        )
    ),
解决方案:

'Declined' => array(
            'conditions' => array(
                'Program.deal_status' => 'declined',
                "Customer.sales_associate {CONDITION}",
                "Program.date_submitted > DATE_SUB(CURDATE(), INTERVAL 60 DAY)",
                'Customer.store {STORE_CONDITION}',
            ),
            'joins' => array(
                array(
                    'table' => 'programs',
                    'alias' => 'Program',
                    'type' => 'LEFT',
                    'conditions' => array(
                        'Program.customer_id = Customer.customer_id'
                    )
                ),
                array(
                    'table' => 'activities',
                    'alias' => 'Activity',
                    'type' => 'LEFT',
                    'conditions' => array(
                        'Activity.customer_id = Customer.customer_id',
                    )
                ),
            ),
            'order' => array(
                'Program.date_submitted DESC',
                "MAX(Activity.date) ASC"
            ),
            'group' => array(
                'Activity.customer_id HAVING most_recent NOT BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) and DATE_ADD(NOW(), INTERVAL 30 DAY)'
            ),
            'fields' => array(
                'customer_id' => 'Customer.customer_id',
                'Customer' => "CONCAT_WS(' ', CustomerPersonalInformation.first_name, CustomerPersonalInformation.last_name) AS full_name",
                'Email' => 'CustomerContactInformation.email',
                'Program Date' => 'Program.date_submitted',
                'Underwriter notes' => 'Program.underwriters_notes',
                'Last Activity Date' => 'Activity.date',
                'hidden' => 'MAX(Activity.date) AS most_recent'
            )
        ),
'Declined' => array(
        'conditions' => array(
            'Program.deal_status' => 'declined',
            "Customer.sales_associate {CONDITION}",
            "Program.date_submitted > DATE_SUB(CURDATE(), INTERVAL 60 DAY)",
            'Customer.store {STORE_CONDITION}',
        ),
        'joins' => array(
            array(
                'table' => 'programs',
                'alias' => 'Program',
                'type' => 'LEFT',
                'conditions' => array(
                    'Program.customer_id = Customer.customer_id'
                )
            ),
            array(
                'table' => 'activities',
                'alias' => 'Activity',
                'type' => 'LEFT',
                'conditions' => array(
                    'Activity.customer_id = Customer.customer_id',
                )
            ),
        ),
        'order' => array(
            'Program.date_submitted DESC',
            "MAX(Activity.date) ASC"
        ),
        // HAVE TO GROUP BY THE DATE
        'group' => array(
            'Activity.customer_id HAVING most_recent NOT BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) and DATE_ADD(NOW(), INTERVAL 30 DAY)'
        ),
        'fields' => array(
            'customer_id' => 'Customer.customer_id',
            'Customer' => "CONCAT_WS(' ', CustomerPersonalInformation.first_name, CustomerPersonalInformation.last_name) AS full_name",
            'Email' => 'CustomerContactInformation.email',
            'Program Date' => 'Program.date_submitted',
            'Underwriter notes' => 'Program.underwriters_notes',
            'Last Activity Date' => 'Activity.date',
            'hidden' => 'MAX(Activity.date) AS most_recent'
        )
    ),

对于自定义字段,您应该使用。另外:你应该经常提到你正在使用的cakephp版本。你应该自己回答并批准它,因为这个问题仍然没有答案。