【问题标题】:Cakephp pagination on recursive conditions递归条件下的 Cakephp 分页
【发布时间】:2011-09-27 13:15:07
【问题描述】:

我在这个问题上疯了,请有人帮助我:)

我有这个模型:

Order hasMany--> Orderitem hasOne--> 产品

产品有字段 vendor_id。

我想对具有特定 vendor_id 的产品的订单进行分页。

我怎样才能做到这一点?

我在 orders_controller 中的代码:

if(!empty($this->data['Order']['vendor_id'])) {
    $conditions['Product.vendor_id']=$this->data['Order']['vendor_id'];
}
if(!empty($this->data['Order']['startdate'])) {
    $conditions['Order.date >=']=$this->data['Order']['startdate'];
}
if(!empty($this->data['Order']['enddate'])) {
    $conditions['Order.date <=']=$this->data['Order']['enddate'];
}
$this->paginate=array('conditions'=>$conditions,'order'=>'Order.id ASC');

它在“where 子句”错误中给出未知列“Product.vendor_id”。 我用 Containable 尝试了几件事,但没有成功:(

【问题讨论】:

    标签: cakephp pagination


    【解决方案1】:

    也许只有在设置了 vendor_id 的情况下才将递归属性设置为 2:

    if(!empty($this->data['Order']['vendor_id'])) {
        $this->paginate['recursive'] = 2;
        $conditions['Product.vendor_id']=$this->data['Order']['vendor_id'];
    }
    if(!empty($this->data['Order']['startdate'])) {
        $conditions['Order.date >=']=$this->data['Order']['startdate'];
    }
    if(!empty($this->data['Order']['enddate'])) {
        $conditions['Order.date <=']=$this->data['Order']['enddate'];
    }
    $this->paginate['conditions'] = $conditions;
    $this->paginate['order'] = 'Order.id ASC';
    

    或者,如果您愿意,您可以将递归设置为 -1 并手动构建连接......类似于:

    $this->paginate = array('fields'=>'Order.*',
                            'conditions'=>$conditions,
                            'joins'=>array( array(  'table' => 'orderitems',
                                            'alias' => 'Orderitem',
                                            'type' => 'INNER',
                                            'conditions' => array('Order.id = Orderitem.order_id')),
                                     array( 'table' => 'products',
                                            'alias' => 'Products',
                                            'type' => 'INNER',
                                            'conditions' => array('Product.id = Orderitem.product_id',
                                                                  'Product.vendor_id'=>$this->data['Order']['vendor_id'])));
    

    希望对你有帮助,祝你好运

    【讨论】:

    • 感谢您的回答对我帮助很大!你是上帝!
    猜你喜欢
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    相关资源
    最近更新 更多