【问题标题】:Associations between 2 tables with Doctrine 2 not found未找到 2 个表与 Doctrine 2 之间的关联
【发布时间】:2023-03-16 03:20:02
【问题描述】:

我正在尝试在 MySQL 表的查询中锻炼基本连接。在 Stackoverflow 上阅读了 documentationsome questions 之后,我仍然无法让它工作......

错误: 消息:[语义错误] 第 0 行,'o' 附近的第 74 列:错误: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;

我做错了什么? 它应该如何工作?

【问题讨论】:

    标签: zend-framework join doctrine-orm


    【解决方案1】:

    你应该这样做:

    $qb = $this->_em->createQueryBuilder()
        ->select('i, o')
        ->from('Client_Model_Client', 'i')
        ->join('i.contact_data', 'o');
    

    【讨论】:

      猜你喜欢
      • 2012-01-23
      • 2019-12-17
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      • 2012-01-06
      • 2016-03-08
      相关资源
      最近更新 更多