我使用的是原则-2.0.4和Zend1.11。Php和实体是从MySQL DB生成的。现在,我正在尝试一个连接两个表的查询,并且只有
语义错误第0行,第48行靠近“e”:错误:类实体\用户没有关联名为
查询:
$query = $em->createQueryBuilder()
->select('u')
->from('\Entities\Users', 'u')
->leftJoin('u.Accounts', 'a')
->getQuery();
$info = $query->getResult();在我的数据库中有两个表:用户,帐户
Users.accountId有一个双向一对一关联到Accounts.id。
<?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;
...
}发布于 2011-04-17 19:46:44
应该将用户实体上的$accountId属性更改为$accounts,因为它不是整数,而是Accounts实体:
/**
* @var Accounts $accounts
*
* @Column(name="accountId", type="integer", nullable=false)
* @OneToOne(targetEntity="Accounts", inversedBy="id")
* @JoinColumn(name="accounts_id", referencedColumnName="id")
*/
private $accounts;您的当前查询无法工作,因为没有Account属性。如果您做了上述更改,下面的更改应该有效:
$query = $em->createQueryBuilder()
->select('u')
->from('\Entities\Users', 'u')
->leftJoin('u.accounts', 'a')
->getQuery();
$info = $query->getResult();发布于 2014-04-04 13:07:22
您不能同时使用@Column和@JoinColumn。
您应该删除@Column行,并且它应该是工作的!:
/**
* @var Accounts $accounts
*
* @OneToOne(targetEntity="Accounts", inversedBy="id")
* @JoinColumn(name="accounts_id", referencedColumnName="id")
*/
private $accounts;https://stackoverflow.com/questions/5692669
复制相似问题