2012-09-19 8 views
7

こんにちは私は、見つけた2つのことをしようとしています モデル紛争のbelongsTo請求書。Cakephp findがnullを返す

は、私がデバッグするとき

invoice.receiver_id=account.id

dispute.invoice_id=invoice.id

は現在、配列がnullを返しているすべての請求書を見つけます。検索文の

中2件の結果があるはず、ここで私の紛争コントローラ

public function index_admin(){ 


    $id = $this->Auth->User('account_id'); 

    $receiver = $this->Invoice->find('all',array(
    'conditions'=>array("AND"=>array(
    'Invoice.id'=>'Dispute.invoice_id', 
    'receiver_id'=>$id)))); 

     $this->set('id',$id); 
     $this->set('receiver', $receiver); 
    } 

私は紛争を持っている請求書についてのリストをプリントアウトしたいので、これは、紛争のコントローラであるのコードです。

Query Error Affected Num. rows Took (ms) 
1 SELECT `Invoice`.`id`, `Invoice`.`scheduled`, `Invoice`.`paid`, `Invoice`.`sender_id`, `Invoice`.`receiver_id`, `Invoice`.`template_id`, `Invoice`.`created`, `Invoice`.`expiry_date`, `Invoice`.`total_amount`, `ReceiverAccount`.`id`, `ReceiverAccount`.`street`, `ReceiverAccount`.`city`, `ReceiverAccount`.`postcode`, `ReceiverAccount`.`state`, `ReceiverAccount`.`country`, `ReceiverAccount`.`active`, `ReceiverAccount`.`account_name`, `ReceiverAccount`.`abn`, `SenderAccount`.`id`, `SenderAccount`.`street`, `SenderAccount`.`city`, `SenderAccount`.`postcode`, `SenderAccount`.`state`, `SenderAccount`.`country`, `SenderAccount`.`active`, `SenderAccount`.`account_name`, `SenderAccount`.`abn`, `Template`.`id`, `Template`.`name`, `Template`.`description`, `Template`.`account_id`, `Template`.`active` FROM `pra`.`invoices` AS `Invoice` LEFT JOIN `pra`.`accounts` AS `ReceiverAccount` ON (`Invoice`.`receiver_id` = `ReceiverAccount`.`id`) LEFT JOIN `pra`.`accounts` AS `SenderAccount` ON (`Invoice`.`sender_id` = `SenderAccount`.`id`) LEFT JOIN `pra`.`templates` AS `Template` ON (`Invoice`.`template_id` = `Template`.`id`) WHERE `Invoice`.`id` = 'Dispute.invoice_id' AND `Invoice`.`receiver_id` = 2 

EDIT ---------------------

invoices tables has - id, sender_id, receiver_id, amount, expiry_date, created, paid 
disputes table has - id, dispute_date, comment, active 

紛争のモデルは、この

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

紛争のように見えます1つの送り状と1つの受取人が1つの紛争を持つことができるようになっています。

+0

変数$ IDリターンである場合、私は知らないのですか? –

+0

はい、正しく印刷されます。 – user1393064

+0

とクエリの後にいくつかのエラーを返しますか?フィールドが見つからない、テーブルが見つかりませんでしたか? –

答えて

1

を知っている: テーブル名がcorrct値を持つ請求書

$id = $this->Auth->User('account_id'); 

$options['joins'] = array( 
    array(
      'table' => 'invoices', 
      'alias' => 'i', 
      'type' => 'INNER', 
      'conditions' => array(   
       'i.id' => 'invoice_id', 
        'i.receiver_id' => $id  
       )  
    )); 

$receiver = $this->Dispute->find('all', $options); 

    $this->set('id',$id); 
    $this->set('receiver', $receiver); 
+0

に:テーブル – user1393064

+0

このオプションを許可している場合は、次のようにクエリを表示してください。<?php echo $ this-> element( 'sql_dump'); ?>いくつかのフィールドが空であるか良いでないか照会を参照してください。 –

+0

何も表示されません。 – user1393064

0
public function index_admin(){ 

    $id = $this->Auth->User('account_id'); 


    $this->Invoice->bindModel(array('hasMany'=>array('Dispute' => array ('className' => 'Dispute','foreignKey' => 'invoice_id')))); 

    $receiver = $this->Invoice->find('all',array('conditions'=>array('Invoice.receiver_id'=>$id))); 

    $this->set('id',$id); 
    $this->set('receiver', $receiver); 

    } 

============更新回答================

public function index_admin(){ 

    $id = $this->Auth->User('account_id'); 


    $this->Invoice->bindModel(array('hasMany'=>array('Dispute' => array ('className' => 'Dispute','foreignKey' => 'invoice_id','conditions'=>array('receiver_id'=>$id))))); 

    $receiver = $this->Invoice->find('all'); 

    $this->set('id',$id); 
    $this->set('receiver', $receiver); 

} 

私の更新の答えを試してみましょう私は、あなたがDisputeControllerにしている場合は、このコードを試してみてください

+0

紛争のない請求書が印刷されます。 – user1393064

+0

user1393064 @:1054不明な列「Invoice.receiver_idを」「句」 – chetanspeed511987

+0

が、それは5つのレコードをプリントアウトだとのみ3 – user1393064