【问题标题】:doctrine 2 Or Where condition学说 2 或 Where 条件
【发布时间】:2014-04-27 11:46:06
【问题描述】:

我正在尝试在我的学说查询中创建 where 条件;

条件应该是;

返回所有已发送的消息,其中:

sender = A and receiver = B

乙;发送者 = B 接收者 = A

以下是我的查询;查询仅返回第一个条件。

public function getMessageHistory()
    { 
        $qb = $this->getEntityManager()->createQueryBuilder();

        $qb->select(array('u'))
            ->from('Messages\Entity\Messages','u')
            ->where  ('u.senderUserId = :senderId AND u.receiverUserId = :receiverId')
            ->orWhere('u.senderUserId = :receiverId AND u.receiverUserId = :senderId')
            ->setParameter('senderId',(int)$this->getUserId())
            ->setParameter('receiverId',(int)$this->getRecipientId());  

            $query = $qb->getQuery();

            return $data = $query->getArrayResult(); 
    }

提前感谢您的帮助

【问题讨论】:

    标签: doctrine-orm


    【解决方案1】:

    我会这样构建:

    $qb->select(array('u'))
        ->from('Messages\Entity\Messages','u')
        ->where(
            $qb->expr()->orX(
                $qb->expr()->andX(
                    $qb->expr()->eq( 'u.senderUserId', ':senderId' ),
                    $qb->expr()->eq( 'u.receiverUserId', ':receiverId' )
                ),
                $qb->expr()->andX(
                    $qb->expr()->eq( 'u.senderUserId', ':receiverId' ),
                    $qb->expr()->eq( 'u.receiverUserId', ':senderId' )
                ),
            )
        )
        ->setParameter('senderId',(int)$this->getUserId())
        ->setParameter('receiverId',(int)$this->getRecipientId()); 
    

    【讨论】:

    • 你好伊卢伊萨纳尔。非常感谢你的回复。我不知道如何使用这种风格 $qb->expr()->orX() 。它叫什么?我的意思是,我在教义网站上找不到任何关于如何使用它的信息?你知道任何关于它的教程
    • 查看QueryBuilder参考
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多