2012-09-19 24 views
1

我有一个查找参数是抛出错误,debugkit说未知列,现在看表时,我可以看到它。Cakephp2.0检索数据查找()

有一个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', 
      ) 
      ); 

这个发现是在disputesController

$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查找检索调试时以下。

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

您可以使用临时删除协会这是没有用在你的方法来检索数据

$ this-> User-> unbindModel(array('belongsTo'=> array('Group'),'hasOne'=> array('UsersChicken')));

类型函数

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'); 

参考:

+0

它不喜欢你放在那里的第二行代码。 – user1393064