【发布时间】:2015-08-26 04:11:33
【问题描述】:
我想知道您是否可以帮助我解决我一段时间以来遇到的问题。 首先,让我解释一下。我有 3 个表:付款、销售和客户。 每个销售都有它的 customer_id 字段 (FK),每个付款都有它的 sale_id。所以我想在 Payments 视图中访问客户名称,为此我为销售模型创建了一个 bindModel,如下所示:
$this->Payment->bindModel(
array(
'belongsTo'=>array(
'Sale'=>array(
'className' => 'Sale',
'foreignKey' => 'sale_id',
)
)
), false
);
并将递归参数设置为两个:
$this->Payment->recursive = 2;
当我向分页器添加一个条件时,问题就来了,因为它不尊重递归参数,它没有与表客户建立关系,它只与表销售建立关系。这就是我声明分页器的方式:
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'),
)
);
【问题讨论】:
-
我猜没人有答案:(
标签: cakephp