代码:
public function atualizarPorLocal( $acao, $novasRedes )
{
$em = $this->getEntityManager();
$apagaObj = $em->getRepository( 'CommonBundle:AcaoRede' )->findBy( array( 'acao'=>$acao ) );
foreach ( $apagaObj as $acao){
if (!empty($acao))
$em->remove($acao);
}
$em->flush();
foreach ( $novasRedes as $idRede )
{
$new = new AcaoRede();
$new->setAcao( $em->getRepository( 'CommonBundle:Acao' )->find( $acao ) );
$new->setRede( $em->getRepository( 'CommonBundle:Rede' )->find( $idRede ) );
$em->persist( $new );
}
$em->flush();
}
ERRO:
PHP Catchable致命错误:类的对象\ CommonBundle \ Entity \ AcaoRede无法在第2794行的vendor / doctrine / orm / lib / Doctrine / ORM / UnitOfWork.php中转换为字符串,referer:/app_dev.php/模/ editar / col_soft
我该怎么做才能解决这个错误?
答案 0 :(得分:0)
您必须使用Acao
' s id
$new->setAcao( $em->getRepository( 'CommonBundle:Acao' )->find( $acao->getId() ) );
Doctrine的find
方法期待id
字段,因此它会尝试使用$acao
方法将您的__toString()
转换为字符串。您必须通过$acao->getId()
才能使其正常工作
答案 1 :(得分:0)
变量$ acao在第二个foreach中输入时假设一个不同的值 通过更改变量的名称解决了这个问题。
foreach ( $apagaObj as $acaoObj){
if (!empty($acaoObj))
$em->remove($acaoObj);
}