学说 2 - 查询生成器条件查询... If 语句?

发布于 2024-12-09 05:35:11 字数 594 浏览 0 评论 0原文

我的查询是doctirne 2。我在用户中有一个状态字段,私人或 民众。我希望能够运行此查询并显示所有评论 仅当 userid = 当前登录时,状态 = 公共和私有 用户 ID(我知道,$loggerUserVarID)

  $q = $this->em->createQueryBuilder()
            ->select('c')
            ->from('\Entities\Comments', 'c')
            ->leftJoin('c.users', 'u')
            ->where('status = public')  ???  display all public comments but private if it belpongs to the logged in user.?
            ->setParameter(1, $loggerUserVarID)
            ->getQuery();

目前,我在得到结果后使用if语句,有没有办法在这个查询中执行if语句?

My query is doctirne 2. i have a status field in users, private or
public. i want to be able to run this query and display all comments
where status= public and private only if userid = current logged in
user id(which i know, $loggerUserVarID)

  $q = $this->em->createQueryBuilder()
            ->select('c')
            ->from('\Entities\Comments', 'c')
            ->leftJoin('c.users', 'u')
            ->where('status = public')  ???  display all public comments but private if it belpongs to the logged in user.?
            ->setParameter(1, $loggerUserVarID)
            ->getQuery();

at the moment, i am using an if statement after i get thee results, is there a way to do an if statement inside this query?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小镇女孩 2024-12-16 05:35:11

那么,您想要返回注释“If status is 'public' or theownerId is $loggedUserVarID”,对吗?

请注意,如果 $loggedUserVarID 与所有者匹配,则您并不真正关心状态。

查看 querybuilder 和 dql 文档。他们非常清楚地解释了如何组合复杂的 where 条件。

您可能想要的是这样的:

$q = $this->em->createQueryBuilder()
            ->select('c')
            ->from('\Entities\Comments', 'c')
            ->join('c.users', 'u')
            ->where(
                $qb->expr()->orX(
                    $qb->expr()->eq('status','public'),
                    $qb->expr()->eq('u.id',$loggedInUser)
                )
           )
         ->setParameter(1, $loggerUserVarID)
         ->getQuery();

So, you want to return Comments "If status is 'public' or the ownerId is $loggedUserVarID", right?

Note that if $loggedUserVarID matches the owner, you don't really care about status.

Check out the querybuilder and dql docs. They explain pretty clearly how to put together complex where conditions.

What you probably want is something like:

$q = $this->em->createQueryBuilder()
            ->select('c')
            ->from('\Entities\Comments', 'c')
            ->join('c.users', 'u')
            ->where(
                $qb->expr()->orX(
                    $qb->expr()->eq('status','public'),
                    $qb->expr()->eq('u.id',$loggedInUser)
                )
           )
         ->setParameter(1, $loggerUserVarID)
         ->getQuery();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文