Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vook

Hydrate entity com JoinColumns

Recommended Posts

Boa noite, pesquisei bastante e alguem poderia me informar como eu hidrato um array contendo vales de ids de outras tabelas para meu entity principal?

 

sendo que o array está assim!

 

array:5 [
"codigo" => "123"
"nome" => "123"
"empresa" => "1"
"funcao" => "13"
"salvar" => "Salvar"

<?php
namespace Corporativo\Form;

use Corporativo\Entity\Funcao;
use Corporativo\Filter\FuncionarioFilter;
use Corporativo\Service\FuncaoService;
use DoctrineORMModule\Form\Element\DoctrineEntity;
use DoctrineORMModule\Options\EntityManager;
use Zend\Di\ServiceLocator;
use Zend\Form\Form;
use Zend\ServiceManager\ServiceManager;
use Zend\Stdlib\Hydrator\ClassMethods;


class FuncionarioForm extends Form {

    /*
     * @var $entityManger \Doctrine\ORM\EntityManager
     */
    public function __construct(\Doctrine\ORM\EntityManager $entityManager){

        parent::__construct('funcionario');
        $this->setAttribute('method', 'POST');
        $this->setInputFilter(new FuncionarioFilter());

        $this->add(
            array(
                'name' => 'codigo',
                'type' => 'Text',
                'options' => array(
                    'label' => 'Matrícula',
                ),
                'attributes' => array(
                    'id' => 'codigo',
                    'class' => 'form-control'
                )
            )
        );
        $this->add(
            array(
                'name' => 'nome',
                'type' => 'Text',
                'options' => array(
                    'label' => 'Funcionário'
                ),
                'attributes' => array(
                    'id' => 'nome',
                    'class' => 'form-control'
                )
            )
        );
        $this->add(
            array(
                'name' => 'empresa',
                'type' => 'DoctrineORMModule\Form\Element\DoctrineEntity',
                'options' => array(
                    'label' => 'Empresa',
                    'object_manager' => $entityManager,
                    'target_class' => 'Corporativo\Entity\Empresa',
                    'property' => 'nome',
                ),
                'attributes' => array(
                    'id' => 'nome',
                    'class' => 'form-control'
                )
            )
        );
        $this->add(
            array(
                'name' => 'funcao',
                'type' => 'DoctrineORMModule\Form\Element\DoctrineEntity',
                'options' => array(
                    'label' => 'Funcao',
                    'object_manager' => $entityManager,
                    'target_class' => 'Corporativo\Entity\Funcao',
                    'property' => 'nome',
                ),
                'attributes' => array(
                    'id' => 'funcao',
                    'class' => 'form-control',
                ),
            )
        );
    }
}
<?php

namespace Corporativo\Entity;

use Doctrine\ORM\Mapping as ORM;
use Infra\Entity\InfraEntity;

/**
 * Funcionario
 *
 * @ORM\Table(name="funcionario", indexes={@ORM\Index(name="IDX_7510A3CF6EDEF13D", columns={"funcao"})})
 * @ORM\Entity
 * @ORM\Entity(repositoryClass="Corporativo\Entity\FuncionarioRepository")
 */
class Funcionario extends InfraEntity {
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\GeneratedValue(strategy="IDENTITY")
     * @ORM\Id
     */
    private $id;

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

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

    /**
     * @var \Corporativo\Entity\Funcao
     *
     * @ORM\ManyToOne(targetEntity="Corporativo\Entity\Funcao")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="funcao", referencedColumnName="id")
     * })
     */
    private $funcao;

    /**
     * @var \Corporativo\Entity\Empresa
     *
     * @ORM\ManyToOne(targetEntity="Corporativo\Entity\Empresa")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="funcao", referencedColumnName="id")
     * })
     */
    private $empresa;



    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set codigo
     *
     * @param string $codigo
     *
     * @return Funcionario
     */
    public function setCodigo($codigo)
    {
        $this->codigo = $codigo;

        return $this;
    }

    /**
     * Get codigo
     *
     * @return string
     */
    public function getCodigo()
    {
        return $this->codigo;
    }

    /**
     * Set nome
     *
     * @param string $nome
     *
     * @return Funcionario
     */
    public function setNome($nome)
    {
        $this->nome = $nome;

        return $this;
    }

    /**
     * Get nome
     *
     * @return string
     */
    public function getNome()
    {
        return $this->nome;
    }

    /**
     * Set funcao
     *
     * @param \Corporativo\Entity\Funcao $funcao
     *
     * @return Funcionario
     */
    public function setFuncao(\Corporativo\Entity\Funcao $funcao = null)
    {
        $this->funcao = $funcao;

        return $this;
    }

    /**
     * Get funcao
     *
     * @return \Corporativo\Entity\Funcao
     */
    public function getFuncao()
    {
        return $this->funcao;
    }

    /**
     * Set empresa
     *
     * @param \Corporativo\Entity\Empresa $empresa
     *
     * @return Funcionario
     */
    public function setEmpresa(\Corporativo\Entity\Empresa $empresa = null)
    {
        $this->empresa = $empresa;

        return $this;
    }

    /**
     * Get empresa
     *
     * @return \Corporativo\Entity\Empresa
     */
    public function getEmpresa()
    {
        return $this->empresa;
    }
}

]

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.