I want to insert a role called Curso, he has 1 Setor and Many to Many 
Categorias and Many to Many Modalidades... i'm Getting This Error Message:

Entity of type Admin\Entity\Curso is missing an assigned ID for field  'id'. 
The identifier generation strategy for this entity requires the ID field to be 
populated before EntityManager#persist() is called. If you want automatically 
generated identifiers instead you need to adjust the metadata mapping 
accordingly.



*Thats my SERVICE code:*


public function insert(array $data, $entity)
    {
        $data['setor_id'] = $this->getEmRef('Admin\Entity\Categoria', 
$data['setor_id']);
        
        // separa as tags por "," digitados no formulario
        $arrTagsPost = explode("," , $data['tags']);
        $arrTags = array();
        //$data['categorias']
        
        // Se houve alguma tag digitada
        if(count($data['categorias'])){
            // Para cada tag digitada
            foreach($data['categorias'] as $categoria)
            {
                $emCategorias = $this->getEM('Admin\Entity\Categoria');
                // procura se existe tag
                $entityCategoria = $emCategorias->findOneById($categoria);
                
                if($entityCategoria){
                    // se existe a tag no banco, vai somente referenciar
                    $arrCategorias[] = $entityCategoria;
                }
            }
        }
        // setando as tags do post
        $data['categorias'] = $arrCategorias;
        
        
        // Se houve alguma tag digitada
        if(count($data['modalidades'])){
            // Para cada tag digitada
            foreach($data['modalidades'] as $modalidade)
            {
                $emModalidade = $this->getEM('Admin\Entity\Modalidade');
                // procura se existe tag
                $entityModalidade = $emModalidade->findOneById($modalidade);
                
                if($entityModalidade){
                    // se existe a tag no banco, vai somente referenciar
                    $arrModalidadess[] = $entityCategoria;
                }
            }
        }
        // setando as tags do post
        $data['modalidades'] = $arrModalidades;
        
        return parent::insert($data,$entity);
    }


*Admin\Entity\Curso*

namespace Admin\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Curso
 *
 * @ORM\Table(name="curso", indexes={@ORM\Index(name="fk_curso_setor1_idx", 
columns={"setor_id"})})
 * @ORM\Entity
 */
class Curso
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="nome", type="string", length=255, nullable=false)
     */
    private $nome;

    /**
     * @var string
     *
     * @ORM\Column(name="url", type="string", length=45, nullable=false)
     */
    private $url;

    /**
     * @var string
     *
     * @ORM\Column(name="img", type="string", length=45, nullable=true)
     */
    private $img;

    /**
     * @var string
     *
     * @ORM\Column(name="video", type="string", length=45, nullable=true)
     */
    private $video;

    /**
     * @var string
     *
     * @ORM\Column(name="resumo", type="string", length=45, nullable=false)
     */
    private $resumo;

    /**
     * @var \Setor
     *
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     * @ORM\OneToOne(targetEntity="Setor")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="setor_id", referencedColumnName="id")
     * })
     */
    private $setor;

    /**
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\ManyToMany(targetEntity="Categoria", inversedBy="curso")
     * @ORM\JoinTable(name="curso_categoria",
     *   joinColumns={
     *     @ORM\JoinColumn(name="curso_id", referencedColumnName="id")
     *   },
     *   inverseJoinColumns={
     *     @ORM\JoinColumn(name="categoria_id", referencedColumnName="id")
     *   }
     * )
     */
    private $categoria;

    /**
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\ManyToMany(targetEntity="Professor", mappedBy="curso")
     */
    private $professor;

    /**
     * Constructor
     */
    public function __construct()
    {
        $this->categoria = new 
\Doctrine\Common\Collections\ArrayCollection();
        $this->professor = new 
\Doctrine\Common\Collections\ArrayCollection();
    }

}

*Admin\Entity\Categoria*

namespace Admin\Entity;

use Doctrine\ORM\Mapping as ORM;
use Zend\Stdlib\Hydrator\ClassMethods;

/**
 * Categoria
 *
 * @ORM\Table(name="categoria")
 * @ORM\Entity(repositoryClass="Admin\Repository\Categoria")
 */
class Categoria
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="nome", type="string", length=45, nullable=false)
     */
    private $nome;

    /**
     * @var boolean
     *
     * @ORM\Column(name="disponivel", type="boolean", nullable=false)
     */
    private $disponivel;

    /**
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\ManyToMany(targetEntity="Curso", mappedBy="categoria")
     */
    private $curso;

    /**
     * Constructor
     */
    public function __construct($data)
    {
        $this->curso = new \Doctrine\Common\Collections\ArrayCollection();
        $hydrator = new ClassMethods();
        $hydrator->hydrate($data, $this);
    }
    
    public function toArray(){
        $hydrator = new ClassMethods();
        return $hydrator->extract($this);
    }
    
    public function getId() {
        return $this->id;
    }

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

    public function getDisponivel() {
        return $this->disponivel;
    }

    public function getCurso() {
        return $this->curso;
    }

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

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

    public function setDisponivel($disponivel) {
        $this->disponivel = $disponivel;
    }

    public function setCurso(\Doctrine\Common\Collections\Collection 
$curso) {
        $this->curso = $curso;
    }



}

*Admin\Entity\Setor*


namespace Admin\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Setor
 *
 * @ORM\Table(name="setor")
 * @ORM\Entity(repositoryClass="Admin\Repository\Setor")
 */
class Setor
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="nome", type="string", length=45, nullable=false)
     */
    private $nome;

    /**
     * @var boolean
     *
     * @ORM\Column(name="disponivel", type="boolean", nullable=false)
     */
    private $disponivel;

    
    public function __construct($data)
    {
        $hydrator = new ClassMethods();
        $hydrator->hydrate($data, $this);
    }
    
    public function toArray(){
        $hydrator = new ClassMethods();
        return $hydrator->extract($this);
    }
    
    public function getId() {
        return $this->id;
    }

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

    public function getDisponivel() {
        return $this->disponivel;
    }

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

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

    public function setDisponivel($disponivel) {
        $this->disponivel = $disponivel;
    }



}


*Admin\Entity\Modalidade*


namespace Admin\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Modalidade
 *
 * @ORM\Table(name="modalidade")
 * @ORM\Entity(repositoryClass="Admin\Repository\Modalidade")
 */
class Modalidade
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="nome", type="string", length=45, nullable=false)
     */
    private $nome;

    /**
     * @var string
     *
     * @ORM\Column(name="descricao", type="string", length=45, 
nullable=false)
     */
    private $descricao;
    
    
    public function getId() {
        return $this->id;
    }

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

    public function getDescricao() {
        return $this->descricao;
    }

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

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

    public function setDescricao($descricao) {
        $this->descricao = $descricao;
    }


    


}

-- 
You received this message because you are subscribed to the Google Groups 
"doctrine-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/doctrine-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to