我有一个发现错误的find参数,debugkit说的是未知列,现在看表时我可以看到它。
有invoices
个表格 - id, sender_id, receiver_id, total_amount, expiry_date
还有一个disputes
表,其中包含 - id, invoice_id, active, dispute_date
这是来自争议模型
public $belongsTo = array(
'Invoice' => array(
'className' => 'Invoice',
'foreignKey' => 'invoice_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
public $hasOne = array(
'Sender' => array(
'className' => 'Account',
'foreignKey' =>'sender_id',
'associationForeignKey' => 'accounts_id',),
'Receiver'=> array(
'className' => 'Account',
'foreignKey' =>'receiver_id',
'associationForeignKey' => 'accounts_id',
)
);
这个发现在disputeController中
$id = $this->Auth->User('account_id');
$conditions=array('Invoice.receiver_id' => $id,
'Dispute.invoice_id'=>'Invoice.id');
$receiver = $this->Invoice->find('all', array(
'conditions'=>$conditions));
debug($receiver);
$this->set('id', $id);
$this->set('conditions', $conditions);
$this->set('receiver', $receiver);
目前正在$conditions
中说Column not found: 1054 Unknown column 'Dispute.invoice_id' in 'where clause'
如果我从$conditions
删除它,则find会在调试时检索以下内容。
array(
(int) 0 => array(
'Invoice' => array(
'id' => '5',
'scheduled' => true,
'paid' => false,
'sender_id' => '3',
'receiver_id' => '2',
'template_id' => '3',
'created' => '2012-02-06 00:00:00',
'expiry_date' => '0000-00-00',
'total_amount' => '0'
),
'ReceiverAccount' => array(
'id' => '2',
'street' => '50 Simmington Circuit',
'city' => 'Greenvale',
'postcode' => '3059',
'state' => 'VIC',
'country' => 'Australia',
'active' => true,
'account_name' => 'Kialla Transport (Operations) Pty Ltd',
'abn' => '2147483647'
),
'SenderAccount' => array(
'id' => '3',
'street' => '31 Simmington Circuit',
'city' => 'Greenvale',
'postcode' => '3059',
'state' => 'VIC',
'country' => 'Australia',
'active' => true,
'account_name' => 'MGD Kialla Pty Ltd',
'abn' => '2147483647'
),
'Template' => array(
'id' => '3',
'name' => 'MGDKiallaConsulting',
'description' => 'The invoice template for MGD Kialla Pty Ltd Consulting Fees',
'account_id' => '3',
'active' => true
),
'FieldsInvoice' => array(),
'Dispute' => array(
(int) 0 => array(
'id' => '5',
'dispute_date' => '2012-03-01',
'comment' => 'Amount on invoice is not the same as amount discussed',
'active' => false,
'invoice_id' => '5'
)
)
),
(int) 1 => array(
'Invoice' => array(
'id' => '16',
'scheduled' => false,
'paid' => false,
'sender_id' => '1',
'receiver_id' => '2',
'template_id' => '0',
'created' => '2012-06-20 00:00:00',
'expiry_date' => '0000-00-00',
'total_amount' => '0'
),
'ReceiverAccount' => array(
'id' => '2',
'street' => '50 Simmington Circuit',
'city' => 'Greenvale',
'postcode' => '3059',
'state' => 'VIC',
'country' => 'Australia',
'active' => true,
'account_name' => 'Kialla Transport (Operations) Pty Ltd',
'abn' => '2147483647'
),
'SenderAccount' => array(
'id' => '1',
'street' => '4 Ridley Court',
'city' => 'Doncaster East',
'postcode' => '3109',
'state' => 'VIC',
'country' => 'Australia',
'active' => true,
'account_name' => 'McDonalds',
'abn' => '2147483647'
),
'Template' => array(
'id' => '0',
'name' => 'SYSTEM',
'description' => 'SYSTEM',
'account_id' => '2',
'active' => true
),
'FieldsInvoice' => array(),
'Dispute' => array(
(int) 0 => array(
'id' => '8',
'dispute_date' => '2012-07-01',
'comment' => 'Amount on invoice is not the same as amount discussed',
'active' => true,
'invoice_id' => '16'
)
)
),
(int) 2 => array(
'Invoice' => array(
'id' => '18',
'scheduled' => true,
'paid' => false,
'sender_id' => '3',
'receiver_id' => '2',
'template_id' => '0',
'created' => '2012-06-25 00:00:00',
'expiry_date' => '0000-00-00',
'total_amount' => '0'
),
'ReceiverAccount' => array(
'id' => '2',
'street' => '50 Simmington Circuit',
'city' => 'Greenvale',
'postcode' => '3059',
'state' => 'VIC',
'country' => 'Australia',
'active' => true,
'account_name' => 'Kialla Transport (Operations) Pty Ltd',
'abn' => '2147483647'
),
'SenderAccount' => array(
'id' => '3',
'street' => '31 Simmington Circuit',
'city' => 'Greenvale',
'postcode' => '3059',
'state' => 'VIC',
'country' => 'Australia',
'active' => true,
'account_name' => 'MGD Kialla Pty Ltd',
'abn' => '2147483647'
),
'Template' => array(
'id' => '0',
'name' => 'SYSTEM',
'description' => 'SYSTEM',
'account_id' => '2',
'active' => true
),
'FieldsInvoice' => array(),
'Dispute' => array(
(int) 0 => array(
'id' => '10',
'dispute_date' => '2012-07-01',
'comment' => 'Amount on invoice is not the same as amount discussed',
'active' => true,
'invoice_id' => '18'
)
)
),
(int) 3 => array(
'Invoice' => array(
'id' => '19',
'scheduled' => true,
'paid' => false,
'sender_id' => '4',
'receiver_id' => '2',
'template_id' => '0',
'created' => '2012-07-26 00:00:00',
'expiry_date' => '0000-00-00',
'total_amount' => '0'
),
'ReceiverAccount' => array(
'id' => '2',
'street' => '50 Simmington Circuit',
'city' => 'Greenvale',
'postcode' => '3059',
'state' => 'VIC',
'country' => 'Australia',
'active' => true,
'account_name' => 'Kialla Transport (Operations) Pty Ltd',
'abn' => '2147483647'
),
'SenderAccount' => array(
'id' => '4',
'street' => '643 Somerton Road',
'city' => 'Greenvale',
'postcode' => '3059',
'state' => 'VIC',
'country' => 'Australia',
'active' => true,
'account_name' => 'Simmington Investments Pty Ltd',
'abn' => '2147483647'
),
'Template' => array(
'id' => '0',
'name' => 'SYSTEM',
'description' => 'SYSTEM',
'account_id' => '2',
'active' => true
),
'FieldsInvoice' => array(),
'Dispute' => array()
),
(int) 4 => array(
'Invoice' => array(
'id' => '20',
'scheduled' => false,
'paid' => false,
'sender_id' => '5',
'receiver_id' => '2',
'template_id' => '0',
'created' => '2012-07-28 00:00:00',
'expiry_date' => '0000-00-00',
'total_amount' => '0'
),
'ReceiverAccount' => array(
'id' => '2',
'street' => '50 Simmington Circuit',
'city' => 'Greenvale',
'postcode' => '3059',
'state' => 'VIC',
'country' => 'Australia',
'active' => true,
'account_name' => 'Kialla Transport (Operations) Pty Ltd',
'abn' => '2147483647'
),
'SenderAccount' => array(
'id' => '5',
'street' => '2 Everingham Court',
'city' => 'Greenvale',
'postcode' => '3059',
'state' => 'VIC',
'country' => 'Australia',
'active' => true,
'account_name' => 'NG Technologies',
'abn' => '2147483647'
),
'Template' => array(
'id' => '0',
'name' => 'SYSTEM',
'description' => 'SYSTEM',
'account_id' => '2',
'active' => true
),
'FieldsInvoice' => array(),
'Dispute' => array()
),
(int) 5 => array(
'Invoice' => array(
'id' => '21',
'scheduled' => false,
'paid' => false,
'sender_id' => '6',
'receiver_id' => '2',
'template_id' => '0',
'created' => '2012-07-30 00:00:00',
'expiry_date' => '2010-11-10',
'total_amount' => '0'
),
'ReceiverAccount' => array(
'id' => '2',
'street' => '50 Simmington Circuit',
'city' => 'Greenvale',
'postcode' => '3059',
'state' => 'VIC',
'country' => 'Australia',
'active' => true,
'account_name' => 'Kialla Transport (Operations) Pty Ltd',
'abn' => '2147483647'
),
'SenderAccount' => array(
'id' => '6',
'street' => '20 Ridley Court',
'city' => 'Doncaster',
'postcode' => '3109',
'state' => 'VIC',
'country' => 'Australia',
'active' => true,
'account_name' => 'KFC',
'abn' => '2147483647'
),
'Template' => array(
'id' => '0',
'name' => 'SYSTEM',
'description' => 'SYSTEM',
'account_id' => '2',
'active' => true
),
'FieldsInvoice' => array(),
'Dispute' => array()
)
)
我想要做的只是检索有发生争议信息的发票信息,例如dispute.invoice_id = invoice.id但是它会引发错误。有什么想法吗?
答案 0 :(得分:0)
尝试使用可包含的行为:
$this->Invoice->Behaviors->attach('Containable');
$this->Invoice->contain('Dispute' => array('conditions' => array('Dispute.invoice_id' => 'Invoice.id')));
$receiver = $this->Invoice->find('all', array('conditions' => array('Invoice.receiver_id' => $id)));
$this->Invoice->Behaviors->detach('Containable');
参考:
答案 1 :(得分:0)
您可以使用临时删除关联,这对您的方法检索数据无用
$ this-> User-> unbindModel(array(' belongsTo' => array(' Group'),' hasOne' =>数组(' UsersChicken')));
类型函数