与cakePHP上相同模型的多重关系

时间:2012-12-04 06:08:55

标签: cakephp model

我正试图在蛋糕kbook中描述的模型上建立多重关系 我有两个模型账户和税收这样

帐户(ID,名称,代码) 税(id.name,sales_tax_gl,purchase_tax_gl)

sales_tax_gl和purchase_tax_gl都与Account.id相关 这些是我创建的模型

class Tax extends AppModel {
var $name = 'Tax';
var $displayField = 'name';

var $belongsTo = array(
    'SalesTax' => array(
        'className' => 'Account',
        'foreignKey' => 'sales_tax_gl',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),
    'PurchaseTax' => array(
        'className' => 'Account',
        'foreignKey' => 'purchase_tax_gl',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);
}


Account Model
class Account extends AppModel {
var $name = 'Account';
var$primaryKey = 'id';


var $hasMany = array(        
    'TaxSalesTax' => array(            
    'className' => 'Tax',            
    'foreignKey' => 'sales_tax_gl' ),        
    'TaxPurchaseTax' => array(            
    'className' => 'Tax',            
    'foreignKey' => 'purchase_tax_gl' ) 

);

}

但它失败并显示此消息“Warning(2):pg_query()[function.pg-query]:查询失败:ERROR:缺少表”帐户“的FROM子句条目

与模特有什么不对?我正在使用postgreSql,谢谢你的帮助

2 个答案:

答案 0 :(得分:0)

在第一个模型中,您的模型名称是SalesTax,而在第二个模型中,模型名称是TaxSalesTax,请将其更正为正确的并尝试。

答案 1 :(得分:0)

我在想我发现了这个问题。这是因为我在帐户模型中使用虚拟字段,如下所示

var $name = 'Account';
var $primaryKey = 'id';
var $displayField = 'name';
var $order=array('Account.id');
var $virtualFields = array('dropdown_name' => 'Account.id || \' \' || Account.name');

当我取消注释$ virtualFields时,它可以正常工作,但我仍然不知道为什么?