首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >原则2加入找不到的社团

原则2加入找不到的社团
EN

Stack Overflow用户
提问于 2011-04-17 09:18:54
回答 2查看 5K关注 0票数 3

我使用的是原则-2.0.4和Zend1.11。Php和实体是从MySQL DB生成的。现在,我正在尝试一个连接两个表的查询,并且只有

语义错误第0行,第48行靠近“e”:错误:类实体\用户没有关联名为

查询:

代码语言:javascript
复制
$query = $em->createQueryBuilder()
    ->select('u')
    ->from('\Entities\Users', 'u')
    ->leftJoin('u.Accounts', 'a')
    ->getQuery();
$info = $query->getResult();

在我的数据库中有两个表:用户,帐户

  • 用户有字段id,有字段id,info。

Users.accountId有一个双向一对一关联到Accounts.id。

代码语言:javascript
复制
<?php
namespace Entities;
/**
 * Users
 *
 * @Table(name="users")
 * @Entity
 */
class Users
{
    /**
     * @var integer $id
     *
     * @Column(name="id", type="integer", nullable=false)
     * @Id
     * @GeneratedValue(strategy="IDENTITY")
     */
    private $id;
   /**
     * @var integer $accountid
     *
     * @Column(name="accountId", type="integer", nullable=false)
     * @OneToOne(targetEntity="accounts", inversedBy="id")
     * @JoinColumn(name="accounts_id", referencedColumnName="id")
     */
    private $accountid;
...
}
<?php
namespace Entities;
/**
 * Accounts
 *
 * @Table(name="accounts")
 * @Entity
 */
class Accounts
{
    /**
     * @var integer $id
     *
     * @Column(name="id", type="integer", nullable=false)
     * @Id
     * @GeneratedValue(strategy="IDENTITY")
     * @OneToOne(targetEntity="users", mappedBy="accountid")
     */
    private $id;
...
}
EN

回答 2

Stack Overflow用户

发布于 2011-04-17 19:46:44

应该将用户实体上的$accountId属性更改为$accounts,因为它不是整数,而是Accounts实体:

代码语言:javascript
复制
/**
  * @var Accounts $accounts
  *
  * @Column(name="accountId", type="integer", nullable=false)
  * @OneToOne(targetEntity="Accounts", inversedBy="id")
  * @JoinColumn(name="accounts_id", referencedColumnName="id")
  */
private $accounts;

您的当前查询无法工作,因为没有Account属性。如果您做了上述更改,下面的更改应该有效:

代码语言:javascript
复制
$query = $em->createQueryBuilder()
    ->select('u')
    ->from('\Entities\Users', 'u')
    ->leftJoin('u.accounts', 'a')
    ->getQuery();
$info = $query->getResult();
票数 4
EN

Stack Overflow用户

发布于 2014-04-04 13:07:22

您不能同时使用@Column@JoinColumn

您应该删除@Column行,并且它应该是工作的!:

代码语言:javascript
复制
/**
  * @var Accounts $accounts
  *
  * @OneToOne(targetEntity="Accounts", inversedBy="id")
  * @JoinColumn(name="accounts_id", referencedColumnName="id")
  */
private $accounts;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5692669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档