I'm doing a PHP Rest API using doctrine as database manager, one of my tables has a'ManyToMany 'relation, and every time I do the get my'ManyToMany' column returns empty.
As an API base I am using this water-sale code and using the Youtube - Ivan Rodrigues .
The entity that has the'ManytoMany' relationship is
/**
*
* @Entity
* @Table(name="desconto")
*/
class Desconto extends Entidade{
/**
*
* @var integer @Id
* @Column(name="id", type="integer")
* @GeneratedValue(strategy="AUTO")
*/
private $id;
/**
*
* @var string @Column(type="string", length=255)
*/
private $codigo;
/**
* @var decimal @Column(type="decimal", precision=5, scale=2)
*/
private $desconto;
/**
*
* @var string @Column(type="string", length=255)
*/
private $motivo;
/**
*
* @var integer @Column(type="integer")
*/
private $valido;
/**
* @ManyToOne(targetEntity="Empresa")
* @JoinColumn(name="empresa_id", referencedColumnName="id")
*/
private $empresa;
/**
* Owning Side
*
* @ManyToMany(targetEntity="Usuario", inversedBy="Desconto",cascade={"persist"})
* @JoinTable(name="usuario_desconto",
* joinColumns={@JoinColumn(name="desconto_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="usuario_id", referencedColumnName="id")}
* )
*/
private $usuario;
public function __construct($id = 0,$codigo= "" ,$desconto= 0.0,$motivo= "" ,$valido= "" ,$empresa = 0,$usuario = 0){
$this->id = $id;
$this->codigo = $codigo;
$this->desconto = $desconto;
$this->motivo = $motivo;
$this->valido = $valido;
$this->empresa = $empresa;
$this->usuario = $usuario;
}
public static function construct($array){
$obj = new Desconto();
$obj->setId( $array['id']);
$obj->setCodigo( $array['codigo']);
$obj->setDesconto( $array['desconto']);
$obj->setMotivo( $array['motivo']);
$obj->setValido( $array['valido']);
$obj->setEmpresa( $array['empresa']);
$obj->setUsuario( $array['usuario']);
return $obj;
}
public function getId(){
return $this->id;
}
public function setId($id){
$this->id=$id;
}
public function getCodigo(){
return $this->codigo;
}
public function setCodigo($codigo){
$this->codigo=$codigo;
}
public function getDesconto(){
return $this->desconto;
}
public function setDesconto($desconto){
$this->desconto=$desconto;
}
public function getMotivo(){
return $this->motivo;
}
public function setMotivo($motivo){
$this->motivo=$motivo;
}
public function getValido(){
return $this->valido;
}
public function setValido($valido){
$this->valido=$valido;
}
public function getEmpresa(){
return $this->empresa;
}
public function setEmpresa($empresa){
$this->empresa=$empresa;
}
public function getUsuario(){
return $this->usuario;
}
public function setUsuario($usuario){
$this->usuario=$usuario;
}
public function equals($object){
if($object instanceof Desconto){
if($this->id!=$object->id){
return false;
}
if($this->codigo!=$object->codigo){
return false;
}
if($this->desconto!=$object->desconto){
return false;
}
if($this->motivo!=$object->motivo){
return false;
}
if($this->valido!=$object->valido){
return false;
}
if($this->empresa!=$object->empresa){
return false;
}
if($this->usuario!=$object->usuario){
return false;
}
return true;
}
else{
return false;
}
}
public function toString(){
return " [id:" .$this->id. "] [codigo:" .$this->codigo. "] [desconto:" .$this->desconto. "] [motivo:" .$this->motivo. "] [valido:" .$this->valido. "] [empresa:" .$this->empresa. "] [usuario:" .$this->usuario. "] " ;
}
public function toArray(){
return [
"id"=>$this->id,
"codigo"=>$this->codigo,
"desconto"=>$this->desconto,
"motivo"=>$this->motivo,
"valido"=>$this->valido,
"empresa"=>$this->empresa->getId(),
"usuario"=>$this->usuario->toArray()
];
}
}