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 在教义查询构建器中选择表之间的特定连接?

带有教义的查询构建器中的外部联接

如何在doctrine zend中没有实体的情况下继续加入查询构建器

基于相关记录总和的查询构建器过滤器

教义queryBuilder:返回对象而不是数组

InfluxDB 的查询构建器?