エラーをスローしている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',
)
);
この発見はdisponsitsControllerにあります
$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()
)
)
私がやりたいのは、紛争情報がある場合にのみ請求書情報を取得することです。つまり、dispartment.invoice_id = invoice.idですが、エラーがスローされます。何か案は?