Zend - 教义 2 查询构建器帮助
Posted
技术标签:
【中文标题】Zend - 教义 2 查询构建器帮助【英文标题】:Zend - doctrine 2 querybuilder help 【发布时间】:2011-09-25 00:36:32 【问题描述】:我想用这个:
$query = $this->_doctrine->createQueryBuilder()
->select('u')
->from('\Entities\Users', 'l')
->leftJoin('l.userentities', 'u')
->getQuery();
return $info = $query->getResult();
我的用户实体是:
namespace Entities\Users;
/**
* @Entity
* @Table(name="users")
* @HasLifecycleCallbacks
*/
class Users extends \Entities\AbstractEntity
/**
* @Id @Column(name="userid", type="integer")
* @GeneratedValue(strategy="AUTO")
*/
protected $userid;
/** @Column(name="itemid", type="integer") */
protected $itemid;
而我的用户实体实体类包含:
namespace Entities\Users;
/**
* @Entity
* @Table(name="userentities")
* @HasLifecycleCallbacks
*/
class Userentities extends \Entities\AbstractEntity
/**
* @Id @Column(name="entityid", type="integer")
* @GeneratedValue(strategy="AUTO")
*/
protected $entityid;
/** @Column(name="userid", type="integer") */
protected $userid;
/** @Column(name="crb", type="string") */
protected $crb;
我尝试将其放入实体中,但没有任何乐趣 * @OneToMany(targetEntity="Users", inversedBy="userid") * @JoinColumn(name="userid", referencedColumnName="userid")
1 个用户有很多用户实体..
我得到这个错误:
错误:类实体\用户没有名为用户的关联
我只想将用户左连接到用户实体..
我怎样才能左加入?
【问题讨论】:
【参考方案1】:尝试将此注释放在 $userid 字段的 Userentities 类中:
/**
* @var Entities\Userentities
* @ManyToOne(targetEntity="Users", inversedBy="userentities", cascade="persist")
*/
private $userid;
你的用户类中的这个注释带有一个名为 $userentities 的新字段:
/**
* @var \Doctrine\Common\Collections\ArrayCollection
* @OneToMany(targetEntity="Userentities", mappedBy="userid", cascade="persist", "remove")
*/
private $userentities;
【讨论】:
heyyep 它有效.. 我添加了一个用户,我可以在该表中选择一个用户实体列表......但是当我进行学说 2 查询时.. 它显示所有用户实体列以及left join tbale users 但它全部为空....我试图验证我的架构,它说:[映射] OK - 映射文件是正确的。 [Database] FAIL - 数据库架构与当前映射文件不同步。为什么我的左连接查询会带来空值? 您是否使用 Doctrine CLI 更新您的架构? orm:schema-tool:update --force 嗨。是的,这就是确切的命令。但是在阅读之后,我不认为这就是它没有拉动联合价值观的原因。它应该提取所有值,但它显示主左表,然后加入空值表以上是关于Zend - 教义 2 查询构建器帮助的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 symfony 在教义查询构建器中选择表之间的特定连接?