加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql – Doctrine 2.1个中外键id =?,编辑:在Doctrine 2.2中修复

发布时间:2021-03-23 13:58:01 所属栏目:编程 来源:网络整理
导读:我在这里看了许多谜底,这些谜底与Doctrine 2.1中严峻缺乏成果有关,这也许是OOP正确性逾越相关理智的功效. 我有两个表,有多对一的相关,文章和成员.会员可以颁发很多文章.拥有方的注释是 /** * @var Member * @ORMManyToOne(targetEntity="Member") * @ORMJo

我在这里看了许多谜底,这些谜底与Doctrine 2.1中严峻缺乏成果有关,这也许是OOP正确性逾越相关理智的功效.

我有两个表,有多对一的相关,文章和成员.会员可以颁发很多文章.拥有方的注释是

/**
 * @var Member
 * @ORMManyToOne(targetEntity="Member")
 * @ORMJoinColumns({
 *   @ORMJoinColumn(name="member_id",referencedColumnName="id")
 * })
 */
 private $member;

我想得到成员6的全部勾当文章,这是一个简朴的SQL查询:

SELECT * FROM mbr_article 
   WHERE active = 1 AND member_id = 6 
   ORDER BY article_id DESC

我最终获得的是

$rep = $this->getDoctrine()->getRepository('SMWMemberBundle:Article');
$q = $rep->createQueryBuilder('a')
     ->leftJoin('a.member','m')    
     ->where('m.id = ?1')
     ->andWhere('a.active = 1')
     ->orderBy('a.id','DESC')
     ->setParameter(1,$id)    
     ->getQuery();

哪个发生了

SELECT m0_.id AS id0,m0_.active AS active1,m0_.update_time AS update_time2,m0_.content AS content3,m0_.member_id AS member_id4 
   FROM mbr_article m0_ 
   LEFT JOIN mbr_member m1_ ON m0_.member_id = m1_.id 
   WHERE m1_.id = ? AND m0_.active = 1 
   ORDER BY m0_.id DESC

哪个事变,也许不会慢许多,但不必要JOIN,由于我已经有了Member工具.当我以另一种方法实行时,我获得的全部文章不只仅是活泼的文章.

我已经看到像Can you get a foreign key from an object in Doctine2 without loading that object?那样行使getEntityIdentifier的相应,并提到2.2中的改造,我可以说是IDENTITY(成员).

在Doctrine 2.1中有没有公道的要领呢?加强是否应承在查询构建器中行使andWhere(‘IDENTITY(member)=?’)?

编辑:

感激@Ocramius,– >个中(‘IDENTITY(a.member)=?1’)在Doctrine 2.2中有用

办理要领

IDENTITY合用于Doctrine 2.2中查询构建器天生的WHERE子句.
$q = $rep->createQueryBuilder('a')
    ->where('IDENTITY(a.member) = ?1')
    ->andWhere('a.active = 1')
    ->orderBy('a.id','DESC')
    ->setParameter(1,$id)    
    ->getQuery();

天生以下SQL:

SELECT m0_.id AS id0,m0_.member_id AS member_id4 
    FROM mbr_article m0_ 
    WHERE m0_.member_id = ? AND m0_.active = 1 
    ORDER BY m0_.id DESC

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读