我确实有一个错误,我不知道如何解决它。
$query = $entityManager->createQuery("UPDATE AppBundle:ChangeAPI SET `key`='asd123' WHERE `id` = 1");
$query->execute();
My AppBundle:ChangeAPI
/**
* @ORMEntity
* @ORMTable(name="api")
*/
class ChangeAPI
{
/**
* @ORMColumn(type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* The date on which the shipment has been created
*
* @ORMColumn(type="string", name="key")
*/
protected $key;
/** Creates a new standard ride */
function __construct()
{
}
}
这是我的错误结果:
[Syntax Error] line 0, col 31: Error: Expected DoctrineORMQueryLexer::T_SET, got '`'
QueryException: [Syntax Error] line 0, col 31: Error: Expected DoctrineORMQueryLexer::T_SET, got '`'
QueryException: UPDATE AppBundle:ChangeAPI SET `key`='asd123' WHERE `id` = 1
有人可以帮助我吗?谢谢。
为什么不使用查询生成器:
$entityManager->createQueryBuilder()
->update('AppBundle:ChangeAPI', 'c')
->set('c.key', ':key')
->where('c.id = :id')
->setParameter('key', 'asd123')
->setParameter('id', 1)
->getQuery()
->execute();
完整参考 http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html
尝试使用别名:
$query = $entityManager->createQuery("UPDATE AppBundle:ChangeAPI c SET c.key='asd123' WHERE c.id = 1");
$query->execute();
希望这个帮助
这不是 MySQL 查询,而是 DQL 查询,因此,不要使用"'"字符作为单元格名称。
$query = $entityManager->createQuery("UPDATE AppBundle:ChangeAPI SET key='asd123' WHERE id = 1");
我想你可以通过Doctrine为此创建一个查询。另一种方法是在正常的控制器方法中更改这些方法。
在控制器中:
/**
* @Route("/edit/{id}"), name="app_edit_API")
* @param ChangeAPI
*/
public function editAPIAction(ChangeAPI $changeAPI)
{
$changeAPI->setKey('asd123');
$this->getDoctrine()->getManager()->flush();
}
您使用的是表单还是命令?如果是这样,那么Palethorn上面的答案是一个更好的选择。