English 中文(简体)
以合并表格更新理论
原标题:update doctrine with join table

我试图更新备注实体中的字段“注”,该实体与“元素Module”和“输入”有关系,“输入”与“学生”实体有关系。

我试过DQL查询:

$query = $this->_em->createQuery( update UaePortailBundle:Note u JOIN u.inscription i JOIN u.elementmodule e join i.etudiant et set u.note = ?3
                                                where et.id = ?1 and e.id = ?2  );
    $query->setParameter(1, $etudiant);
    $query->setParameter(2, $element);
    $query->setParameter(3, $note);
    $resultat = $query->execute();

我得到了这个错误

[Syntax Error] line 0, col 50: Error: Expected DoctrineORMQueryLexer::T_EQUALS, got  i 
问题回答

LEFTJOIN, 特别是JOIN, 仅在 MySQL. DQL 的更新声明中得到支持。 DQL 摘要是共同 asi sql 的子集, 因此这是不可能的。 尝试子选择或身份识别( 您必须使用最新版本的理论2.2. 2) :

createQuery( update UaePortailBundle:Note u set u.note = ?3
             where IDNETITY(u.inscription) = ?1 and IDENTITY(u.elementmodule) = ?2  );

在搜索并试图找到使用 dql 理论的解决方案后, 我找不到解决方案, 所以我直接使用 sql 查询来更新数据库 。

     $stmt = $this->getEntityManager()
               ->getConnection()
               ->prepare("update note set note = :note where `etudiant_id` like :etudiant_id and `elementmodule_id` like :elementmodule_id");
                $stmt->bindValue( etudiant_id ,$etudiant);
                $stmt->bindValue( elementmodule_id  ,$element );
                $stmt->bindValue( note , $note);
                $stmt->execute();




相关问题
Zend and static class properties

I m trying to assign a value to a static class property when defining it: namespace Base; abstract class Skeleton { protected static $entityManager = end_Registry::get("EntityManager"); ......

require_once missing doctrine zend framework

I m integrating doctrine with Zend Framework. I ve hit an error thrown from cli. It seems Zend_Application_Bootstrap_Bootstrap does not have a require_once for ...

doctrine: QueryBuilder vs createQuery?

In Doctrine you can create DQL in 2 ways: EntityManager::createQuery: $query = $em->createQuery( SELECT u FROM MyProjectModelUser u WHERE u.id = ?1 ); QueryBuilder: $qb->add( select , u ) ...

热门标签