2011-06-27 33 views
0

我试图在MySQL表中查询基本连接。 #2读取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'); 
相关问题