Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom pessoal,
Por necessidade de desenvolvimento mais ágil adotei o codeigniter a um tempo atrás e peguei um bom domínio no framework. Recentemente senti a necessidade do uso de um framework para trabalhar com o banco de dados, já que estava trabalhando com bancos mais complexos. Adotei o doctrine por ser um framework com uma boa documentação, atualização e bem útil em relação a mapeamento de dados.
Para a integração dos frameworks eu utilizei este tutorial.
Bom, tenho um problema ao gerar automaticamente as entidades após fazer o mapeamento do banco de dados.
Segui a risca as configurações do tutorial, somente ignorando a criação do banco de dados via terminal pois meu banco já existia.
Então o que fiz foi executar o seguinte código:
orm:convert-mapping --from-database annotation models/Entity
Esse código criou as classes certinhas conforme o esperado. Mas somente declarando as variáveis privadas e um método construtor em classes com entidades com relacionamento.
Porém ao executar o código para gerar o getters e setters
orm:generate-entities --generate-annotations="true" models/Entity
Ele me retornou um erro:
No Metadata Classes to Proccess
Bom, criando os getters e setters na mão a integração funcionou perfeitamente. Meu único problema é ter que fazer isso na mão sempre que for mapear um banco. Imagine um banco com 50 tabelas com cada uma em média de 5~10 atributos.
Bom vou colar um código que foi gerado com sucesso no mapeamento do banco de dados.
<?php
use Doctrine\ORM\Mapping as ORM;
/**
* Usuarios
*
* @ORM\Table(name="usuarios")
* @ORM\Entity
*/
class Usuarios
{
/**
* @var integer $usuarioId
*
* @ORM\Column(name="usuario_id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="usuarios_usuario_id_seq", allocationSize="1", initialValue="1")
*/
private $usuarioId;
/**
* @var string $usuarioNome
*
* @ORM\Column(name="usuario_nome", type="string", length=32, nullable=false)
*/
private $usuarioNome;
/**
* @var string $usuarioSobrenome
*
* @ORM\Column(name="usuario_sobrenome", type="string", length=64, nullable=false)
*/
private $usuarioSobrenome;
/**
* @var integer $usuarioCpf
*
* @ORM\Column(name="usuario_cpf", type="integer", nullable=false)
*/
private $usuarioCpf;
/**
* @var string $usuarioEmail
*
* @ORM\Column(name="usuario_email", type="string", length=128, nullable=false)
*/
private $usuarioEmail;
/**
* @var string $usuarioSenha
*
* @ORM\Column(name="usuario_senha", type="string", length=128, nullable=false)
*/
private $usuarioSenha;
/**
* @var string $usuarioNmMae
*
* @ORM\Column(name="usuario_nm_mae", type="string", length=128, nullable=false)
*/
private $usuarioNmMae;
/**
* @var integer $usuarioRg
*
* @ORM\Column(name="usuario_rg", type="integer", nullable=false)
*/
private $usuarioRg;
/**
* @var string $usuarioRgUf
*
* @ORM\Column(name="usuario_rg_uf", type="string", nullable=false)
*/
private $usuarioRgUf;
/**
* @var integer $usuarioRgOrg
*
* @ORM\Column(name="usuario_rg_org", type="integer", nullable=false)
*/
private $usuarioRgOrg;
/**
* @var date $usuarioRgDt
*
* @ORM\Column(name="usuario_rg_dt", type="date", nullable=false)
*/
private $usuarioRgDt;
/**
* @var \Doctrine\Common\Collections\ArrayCollection
*
* @ORM\ManyToMany(targetEntity="Telefones", inversedBy="usuario")
* @ORM\JoinTable(name="usuario_telefone",
* joinColumns={
* @ORM\JoinColumn(name="usuario_id", referencedColumnName="usuario_id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="telefone_id", referencedColumnName="telefone_id")
* }
* )
*/
private $telefone;
/**
* @var \Doctrine\Common\Collections\ArrayCollection
*
* @ORM\ManyToMany(targetEntity="Enderecos", inversedBy="usuario")
* @ORM\JoinTable(name="usuario_endereco",
* joinColumns={
* @ORM\JoinColumn(name="usuario_id", referencedColumnName="usuario_id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="endereco_id", referencedColumnName="endereco_id")
* }
* )
*/
private $endereco;
/**
* @var \Doctrine\Common\Collections\ArrayCollection
*
* @ORM\ManyToMany(targetEntity="ModalidadeJogo", inversedBy="usuario")
* @ORM\JoinTable(name="usuario_modalidade",
* joinColumns={
* @ORM\JoinColumn(name="usuario_id", referencedColumnName="usuario_id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="modalidade_id", referencedColumnName="modalidade_id")
* }
* )
*/
private $modalidade;
/**
* @var EstadoCivil
*
* @ORM\ManyToOne(targetEntity="EstadoCivil")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="usuario_estado_civil", referencedColumnName="estado_civil_id")
* })
*/
private $usuarioEstadoCivil;
public function __construct()
{
$this->telefone = new \Doctrine\Common\Collections\ArrayCollection();
$this->endereco = new \Doctrine\Common\Collections\ArrayCollection();
$this->modalidade = new \Doctrine\Common\Collections\ArrayCollection();
}
Já procurei em diversos fóruns, mas não achei nenhuma solução (inclusive teve um sujeito que postou em diversos fóruns esta mesma dúvida a uns meses atrás mas em nenhum deles existiu uma resposta).
Agradeço desde já a ajuda pessoal.
Carregando comentários...