对象无法转换为字符串

时间:2014-06-04 14:04:37

标签: php symfony doctrine-orm

代码:

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

我该怎么做才能解决这个错误?

2 个答案:

答案 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);
    }