我想知道如果你可以帮我解决一段时间以来遇到的问题。 首先,让我解释一下。我有3个表:付款,销售和客户。 每个销售都有其customer_id字段(FK),每个付款都有其sale_id。所以我想在Payments视图中访问客户名称,为此我创建了一个bindModel到销售模型,如下所示:
$this->Payment->bindModel(
array(
'belongsTo'=>array(
'Sale'=>array(
'className' => 'Sale',
'foreignKey' => 'sale_id',
)
)
), false
);
并将递归参数设置为2:
$this->Payment->recursive = 2;
当我向Paginator添加一个条件时出现问题,因为它不尊重递归参数,它不会使表与客户的关系,它只使它到表Sales。这就是我声明分页符的方式:
public $paginate = array(
'limit' => 100,
);
这就是我如何设置分页器的条件:
$this->Paginator->settings = $this->paginate;
$conditions = array();
if(!empty($customerName)){
$searchTerm = '%' . $customerName. '%';
$conditions[] = array( "AND" => array ("Customer.name LIKE" => $searchTerm ) );
}
$this->Paginator->settings['conditions']['AND'] = $conditions;
然后它显示以下错误:
数据库错误
错误:SQLSTATE [42S22]:找不到列:1054未知列 'where子句'中的'customer.name'
有人知道发生了什么吗?我很感激任何有帮助的人。提前谢谢。
编辑:
付款模式:
var $belongsTo = array(
'Sale' => array(
'type' => 'LEFT'
)
);
销售模式
var $belongsTo = array(
'Product' => array(
'type' => 'INNER',
'fields' => array('Product.id, Product.name, Product.multiple')
),
'Customer' => array(
'type' => 'INNER',
'fields' => array('Customer.name, Customer.rfc'),
)
);
答案 0 :(得分:0)
我找到了解决方案,就在这里,以防有人需要它:
我像这样设置了分页:
$this->paginate['Payment'] = array(
'contain'=>array(
'Sale'=>array(
'Customer'
)
),
'joins'=>array(
array(
'table'=>'customers',
'alias'=>'Customer',
'type'=>'INNER',
'conditions'=>array(
'Customer.id = Sale.customer_id',
)
)
)
);
这样的条件:
$this->paginate['Payment']['conditions']['AND'] = $conditions;
最后:
$this->Paginator->settings = $this->paginate;
我希望它会有用。感谢。