0

我正在尝试使用学说 2 从我的数据库中删除注册表,但出现以下错误:

Catchable fatal error: Argument 1 passed to Doctrine\ORM\Mapping\DefaultQuoteStrategy::getJoinTableName() must be an array, null given, called in /home/triangulum/www/pedal/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php on line 1020 and defined in /home/triangulum/www/pedal/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/DefaultQuoteStrategy.php on line 86

我有 3 张桌子:

grupo = id,名称

permissao = 身份证,姓名

grupo_permissao = grupo_id,permissao_id

我的实体:

集团:

    <?php

namespace User\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;


/**
 * @ORM\Entity
 * @ORM\Table(name="grupo")
 * @ORM\Entity(repositoryClass="User\Entity\GrupoRepository")
 */
class Grupo {



    public function __construct($options=null) {
        Configurator::configure($this, $options); 
        $this->permissoes = new ArrayCollection();
    }


    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue
     * @var int
     */
    protected $id;


    /**
     * @ORM\Column(type="text")
     * @var string
     */
    protected $nome;

    /**
     * @ORM\ManyToMany(targetEntity="User\Entity\Permissao", mappedBy="grupo", cascade={"remove"})
     */
    protected $permissoes;

    public function getPermissoes()
    {
        return $this->permissoes;
    }

    public function getId() {
        return $this->id;
    }

    public function setId($id) {
        $this->id = $id;
    }

    public function getNome() {
        return $this->nome;
    }

    public function setNome($nome) {
        $this->nome = $nome;
    }


    public function toArray()
    {
        return array
        (
            'id' => $this->getId(),
            'nome' => $this->getNome()
        );
    }
}

?>

许可:

<?php

namespace User\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;

/**
 * @ORM\Entity
 * @ORM\Table(name="permissao")
 * @ORM\Entity(repositoryClass="User\Entity\PermissaoRepository")
 */
class Permissao {



    public function __construct($options=null) {
        Configurator::configure($this, $options); 
        $this->grupos = new ArrayCollection();

    }


    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue
     * @var int
     */
    protected $id;


    /**
     * @ORM\Column(type="text")
     * @var string
     */
    protected $nome;



     /**
     * @ORM\ManyToMany(targetEntity="User\Entity\Grupo", inversedBy="permissao",  cascade={"persist", "remove"})
     * @ORM\JoinTable(name="grupo_permissao",
      * joinColumns={@ORM\JoinColumn(name="permissao_id", referencedColumnName="id")},
      * inverseJoinColumns={@ORM\JoinColumn(name="grupo_id", referencedColumnName="id")}
      * )
     */
    protected $grupos;

    public function getGrupos() {
        return $this->grupos;
    }
    public function getId() {
        return $this->id;
    }

    public function setId($id) {
        $this->id = $id;
    }

    public function getNome() {
        return $this->nome;
    }

    public function setNome($nome) {
        $this->nome = $nome;
    }


    public function toArray()
    {
        return array
        (
            'id' => $this->getId(),
            'nome' => $this->getNome()
        );
    }
}

?>

消除:

 public function delete($id)
    {

        $entity = $this->entityManager->find('User\Entity\Grupo', $id);

        if($entity)
        {
            $this->entityManager->remove($entity);

            $this->entityManager->flush();
            return $id;
        }
    }

我究竟做错了什么?

4

1 回答 1

3

我认为您在 manyToMany 注释中的mappedBy和属性有问题。inversedBy它们应该与其他实体的属性名称匹配,grupos并且permissoes. 尝试这个:

/**
 * @ORM\ManyToMany(targetEntity="User\Entity\Permissao", mappedBy="grupos", cascade={"remove"})
 */
protected $permissoes;


/**
 * @ORM\ManyToMany(targetEntity="User\Entity\Grupo", inversedBy="permissoes", cascade={"persist", "remove"})
 * @ORM\JoinTable(name="grupo_permissao",
 * joinColumns={@ORM\JoinColumn(name="permissao_id", referencedColumnName="id")},
 * inverseJoinColumns={@ORM\JoinColumn(name="grupo_id", referencedColumnName="id")}
 * )
 */
protected $grupos;
于 2013-03-04T19:10:39.943 回答