代码之家  ›  专栏  ›  技术社区  ›  user7424312

如何使用内部联接创建查询生成器更新

  •  0
  • user7424312  · 技术社区  · 6 年前

    我有这个问题:

    $query = $this->_em->createQuery(
            "UPDATE PublicBundle:Table1 t1
             JOIN PublicBundle:Table2 t2 WITH t1.ad_id = t2.id
             SET t1.status = :status
             WHERE t1.status IN (':statuses') 
             AND t2.updated_at < ':dateLimit'"
            )->setParameter('status', 1)
             ->setParameter('statuses', implode(",", $statuses))
             ->setParameter('dateLimit', new \DateTime(sprintf('-%d day', $date))
    echo $query->getSQL();
    $query->execute();
    

    但我得到了一个错误:

    Error: Expected Doctrine\ORM\Query\Lexer::T_EQUALS, got 't2');
    

    你能帮帮我吗?Thx提前

    1 回复  |  直到 6 年前
        1
  •  1
  •   Raonak Islam Niloy    6 年前
        $sql ="UPDATE Table1 t1
         JOIN Table2 t2 ON t1.ad_id = t2.id
         SET t1.status = :status
         WHERE t1.status IN (':statuses') 
         AND t2.updated_at < ':dateLimit'";
        $params=array(
           'status'=>1,
            'statuses'=> implode(",", $statuses)
    'dateLimit'=>new \DateTime(sprintf('-%d day', $date)
        );
        return $this->getEntityManager()->getConnection()->executeQuery($sql, $params);   
    

    尝试在自定义存储库中使用此选项。首先在phpmyadmin中进行硬编码,然后在脚本中尝试此sql