【发布时间】:2013-03-29 00:13:49
【问题描述】:
使用 symfony2 但它更多只是 mysql 问题...
我认为我有很好的表架构(只是重要的字段)(代码是不言自明的):
用户(ID) 状态(id) 喜欢(id,user_id,status_id) cmets (id,user_id,status_id)
我正在做大选择。
正在尝试这个:
$qb=$this->createQueryBuilder('s')
->addSelect('u')
->addSelect('u2')
->addSelect('u3')
->addSelect('l')
->addSelect('c')
->addSelect('s2')
->where('s.user = :user')
->setParameter('user', $user)
->innerJoin('s.user', 'u')
->leftJoin('s.likes', 'l')
->leftJoin('l.user', 'u2')
->leftJoin('s.comments', 'c')
->leftJoin('c.user', 'u3')
->leftJoin('c.status', 's2')
->orderBy('s.time', 'DESC')
->setMaxResults(15);
但结果是 15 个相同的状态...错误。
当我只选择状态时效果很好......喜欢状态......和用户(喜欢和状态的作者)
这样:
SELECT * FROM statuses s0_
INNER JOIN users t1_ ON s0_.user_id = t1_.id
LEFT JOIN status_likes s2_ ON s0_.id = s2_.status_id
INNER JOIN users t3_ ON s2_.user_id = t3_.id
WHERE s0_.user_id = 25 ORDER BY s0_.time DESC LIMIT 15
效果很好,但是我如何实现另一个 cmets 和(用户 -> cmets 的作者)选择那里?...
【问题讨论】:
标签: symfony join doctrine-orm left-join inner-join