Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal. Estou estudando a possibilidade de utilizar ORM em um projeto na faculdade (Propel, Doctrine ou PHP-ActiveRecord) e estou enfrentando alguns problemas com o Doctrine e o Propel (Vou abrir outro tópico essa semana sobre o Propel).
Primeiro, segue o código do que eu fiz através de vários tutoriais:
<?php
// entities/Album.php
use Doctrine\Common\Collections\ArrayCollection;
/**
*
* Description of Album
* @Table(name="albums")
*
**/
class Album
{
/**
* @var integer
* @Id @Column(name="id", type="integer", nullabe=false)
* @GeneratedValue(strategy="AUTO")
**/
private $id;
/** @Column(type="string") **/
private $type;
/** @Column(type="string") **/
private $title;
/**
* @param \Doctrine\Common\Collections\ArrayCollection $property
* @OneToMany(targetEntity="Musics",mappedBy="album", cascade={"persist", "remove"})
**/
protected $musics;
public function __construct()
{
$this->musics = new \Doctrine\Common\Collections\ArrayCollection();
}
public function getId()
{
return $this->id;
}
public function getType()
{
return $this->type;
}
public function setType($type)
{
$this->type = $type;
}
public function getTitle()
{
return $this->title;
}
public function setTitle($title)
{
$this->title = $title;
}
public function setMusics($musics)
{
$this->musics = $musics;
return $this->musics;
}
public function getMusics()
{
return $this->musics;
}
public function hasMusics(Music $music)
{
$musics = array();
foreach($this->getMusics() as $arrMember)
{
$musics[] = $arrMember->getMusicName();
}
if(in_array($music->getMusicName(), $musics)
{
return true;
}
}
public function removeMusic(Music $music)
{
$this->musics->removeElemente($music);
$music->unsetAlbum();
}
public function addMusic(Music $music)
{
$music->setUser($this);
$this->musics[] = $music;
}
}
?>
<?php
// entities/Music.php
/**
* @Table(name="musics")
* @Entity
*/
class Music
{
/**
* @var integer
* @Id @column(name="id", type="integer", nullable=false)
* @GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var Album
* @ManyToOne(targetEntity="Album", inversedBy="musics")
* @JoinColumns({
* @JoinColumn(name="album_id", referencedColumnName="id")
* })
*/
protected $album_id;
/**
* @var string
* @Column(type="string")
*/
protected $title;
public function setAlbum(Album $album)
{
$this->album_id = $album;
}
public function unsetAlbum()
{
$this->album_id = null;
}
public function getAlbum()
{
return $this->album_id;
}
public function getTitle()
{
return $this->title;
}
public function setTitle($title)
{
$this->title = $title;
return $this->title;
}
}
?>
Explicando o sistema:
Estou tentando fazer um SIMPLES sistema para cadastro de acervo musical (apenas para testar o framework), onde eu posso cadastrar albuns e músicas (Um album contém várias músicas).
O que eu estou em dúvida é se o que foi feito até agora está correto e COMO eu coloco isso pra funcionar! Deu um nó na minha cabeça e não consigo colocar isso pra rodar.
Espero ter sido claro, qualquer coisa me perguntem.
Obrigado!
Carregando comentários...