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.