我的 Controller 是:
/**
* @Route("/product/submit", name="product_submit")
* @Template("GaorenVendorsBundle:Product:index.html.twig")
*/
public function submitAction()
{
$em = $this->getDoctrine()->getManager();
$uid = $this->getUser()->getId();
$em->getRepository( 'GaorenVendorsBundle:Product' )->updateStatus( $uid, Product::STATUS_FREE, Product::STATUS_PENDING );
return $this->redirect( $this->generateUrl( 'product' ) );
}
我的仓库是:
class ProductRepository extends EntityRepository
{
public function updateStatus($uid, $status, $setter)
{
$st = $this->getEntityManager()->getRepository( 'GaorenVendorsBundle:Product' )
->createQueryBuilder( 'p' )
->update( 'GaorenVendorsBundle:Product', 'p' )
->set( 'p.status', ':setter' )
->where( 'p.status= :status AND p.user= :user' )
->setParameters( array(
'user' => $uid,
'status' => $status,
'setter' => $setter
) )
->getQuery()
->execute()
return $st;
}
Twig :
<a class="btn btn-large btn-primary " href="{{ path('product_submit') }}">
<i class="icon-plus icon-white"></i>
{{ 'create a new entry'|trans }}
</a>
当请求“提交”操作时,它会提示我:
[Semantical Error] line 0, col 75 near 'submit': Error: 'submit' is not defined.
“submit”与 Doctrine ORM 查询无关,为什么会出现在错误中?
最佳答案
是否有一条路线与上面的 /product/{id}
之类的内容相匹配?
这将与您的 /product/submit
路由匹配,并将 $id
视为字符串 "submit"
。 Symfony 中第一个匹配的路线获胜。然后,如果您尝试从此 id 检索 Product 对象,则可能会引发此类错误。
解决方案是将提交操作移至处理 /product/{id}
路由的操作之上。
关于orm - 奇怪的错误 : [Semantical Error] line 0, col 75 靠近 'submit' :错误: 'submit' 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11200321/