Doctrine - Symfony查询错误

Col*_*aul 3 php symfony doctrine-orm

我有一个错误,我不知道如何解决它.

$query = $entityManager->createQuery("UPDATE AppBundle:ChangeAPI SET `key`='asd123' WHERE `id` = 1");
$query->execute();
Run Code Online (Sandbox Code Playgroud)

我的AppBundle:ChangeAPI

/**
 * @ORM\Entity
 * @ORM\Table(name="api")
 */
 class ChangeAPI
 {
     /**
      * @ORM\Column(type="integer")
      * @ORM\Id
      * @ORM\GeneratedValue(strategy="AUTO")
      */
     protected $id;

     /**
      * The date on which the shipment has been created
      *
      * @ORM\Column(type="string", name="key")
      */
     protected $key;

     /** Creates a new standard ride */
     function __construct()
     {
     }
 }
Run Code Online (Sandbox Code Playgroud)

这是我的错误结果:

[Syntax Error] line 0, col 31: Error: Expected Doctrine\ORM\Query\Lexer::T_SET, got '`'
QueryException: [Syntax Error] line 0, col 31: Error: Expected Doctrine\ORM\Query\Lexer::T_SET, got '`'
QueryException: UPDATE AppBundle:ChangeAPI SET `key`='asd123' WHERE `id` = 1 
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗?谢谢.

Pal*_*orn 6

为什么不使用查询生成器:

$entityManager->createQueryBuilder()
    ->update('AppBundle:ChangeAPI', 'c')
    ->set('c.key', ':key')
    ->where('c.id = :id')
    ->setParameter('key', 'asd123')
    ->setParameter('id', 1)
    ->getQuery()
    ->execute();
Run Code Online (Sandbox Code Playgroud)

完整参考http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html