2011-06-27 24 views
0

私は、MySQLテーブルのクエリで基本的な結合を試しています。 stackoverflowの上documentationsomequestionsを読んだ後、私はまだそれが仕事を得ることができない...Doctrine 2の2つのテーブル間の関連が見つかりません

エラー: メッセージ:[意味論的エラー]行0、列74の近くに 'O':エラー:クラスClient_Model_ClientがContact_Model_Contact

ここにコードという名前の関連性を持っていない、私のモデルと私が働いているクエリです:

モデルクライアント

<?php 
/** 
* @Table(name="client_clients") 
* @Entity(repositoryClass="Client_Model_ClientRepository") 
*/ 
class Client_Model_Client { 

public function __construct() 
{ 
    $this->contacts = new \Doctrine\Common\Collections\ArrayCollection(); 
} 

/** 
* @var integer $id 
* @Id @Column(type="integer") 
* @GeneratedValue 
*/ 
private $id; 

/** 
* @var string $name 
* @Column(type="string") 
*/ 
private $name; 

/** 
* @var string $address 
* @Column(type="string") 
*/ 
private $address; 

/** 
* @var string $comment 
* @Column(type="string") 
*/ 
private $comment; 

/** 
* @var integer $account_id 
* @Column(type="integer") 
*/ 
private $account_id; 

/** 
* @var integer $contact_id 
* @Column(type="integer") 
*/ 
private $contact_id; 

/** 
* @var string $created_at 
* @Column(type="string") 
*/ 
private $created_at; 

/** 
* @var contact_data $contact_data 
* @Column(name="contact_data", type="integer", nullable=false) 
* @OneToMany(targetEntity="Contact_Model_Contact", mappedBy="contact_data") 
* @JoinColumn(name="contact_id", referencedColumnName="id") 
*/ 
private $contact_data; 

... (getters and setters) 

モデルの接触

<?php 
/** 
* @Table(name="contact_contacts") 
* @Entity(repositoryClass="Contact_Model_ContactRepository") 
*/ 
class Contact_Model_Contact { 

/** 
* @var integer $id 
* @Id @Column(type="integer") 
* @GeneratedValue 
* @ManyToOne(targetEntity="Client_Model_Client", mappedBy="contact_data") 
*/ 
private $id; 

/** 
* @var string $name 
* @Column(type="string") 
*/ 
private $name; 

/** 
* @var string $email 
* @Column(type="string") 
*/ 
private $email; 

/** 
* @var string $phone 
* @Column(type="string") 
*/ 
private $phone; 

/** 
* @var integer $address 
* @Column(type="string") 
*/ 
private $address; 

/** 
* @var string $comment 
* @Column(type="string") 
*/ 
private $comment; 

/** 
* @var string $created_at 
* @Column(type="string") 
*/ 
private $created_at; 

/** 
* @var integer $contact_id 
* @Column(type="string") 
*/ 
private $contact_id; 

クエリ

$qb = $this->_em->createQueryBuilder() 
       ->select('i, o') 
       ->from('Client_Model_Client', 'i') 
       ->join('i.Contact_Model_Contact', 'o'); 
    $query = $qb->getQuery(); 
    $roles = $query->getResult(); 
    Zend_Debug::dump($roles); die; 

私が間違って何をしているのですか? どうすればよいですか?

答えて

1

あなたがこれを行うべきである:

$qb = $this->_em->createQueryBuilder() 
    ->select('i, o') 
    ->from('Client_Model_Client', 'i') 
    ->join('i.contact_data', 'o'); 
関連する問題