教义QueryBuilder-案例

马尔科·米连科维奇(MarkoMilenković)

我有一个关于学说时的案例的问题。问题在于,当uim.isProfileImage is一个用户1时,该用户将返回该行以及user_image表中的其他所有行我想要的是,如果有个人资料图片(表中isProfileImage为1 user_image,则同一用户只能有该值的一行)只给我该行,如果没有类似的内容,请给我null 。

public function searchUsersByIds(array $ids)
{
    $qb = $this->createQueryBuilder('user');
    $qb->select('user.id', 'user.username');
    $qb->addSelect('(CASE WHEN uim.isProfileImage = :isProfileImage THEН uim.imageFileName ELSE :null END) AS imageFileName');
    $qb->leftJoin('user.userImages','uim');
    $qb->add('where', $qb->expr()->in('user.id', ':ids'));
    $qb->setParameter('ids', $ids);
    $qb->setParameter('isProfileImage', 1);
    $qb->setParameter('null', null);
    return $qb->getQuery()->getResult();
} 

所以应该看起来像这样:使用个人资料图片:

userId => 1,
username => 'Mark',
imageFileName => 'someFileName'

并且没有个人资料图片:

userId => 1,
username => 'Mark',
imageFileName => null

另外,由于有一个in expr,它应与传递给此函数的多个ID一起使用。提前致谢。

阿金菲耶夫

尝试这个:

public function searchUsersByIds(array $ids)
{
    $qb = $this->createQueryBuilder('user');
    $qb->select('user.id', 'user.username');
    $qb->addSelect('uim.imageFileName AS imageFileName');
    $qb->leftJoin('user.userImages','uim', 'with', 'uim.isProfileImage = :isProfileImage');
    $qb->add('where', $qb->expr()->in('user.id', ':ids'));
    $qb->setParameter('ids', $ids);
    $qb->setParameter('isProfileImage', 1);
    $qb->setParameter('null', null);
    return $qb->getQuery()->getResult();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章