1

我有一个抛出错误的 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',
            )
            );

这个发现在争议控制器中

$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()
    )
)

我想要做的只是检索他们有争议信息的发票信息,即争议.invoice_id=invoice.id 但它会引发错误。有任何想法吗?

4

2 回答 2

0

您可以使用临时删除关联,这在您检索数据的方法中没有用

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

类型函数

于 2012-09-20T12:41:30.373 回答
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');

参考:

于 2012-09-19T11:46:40.873 回答