Buenos dias, tengo un problema a la hora de recuperar tablas relacionadas. El primera problema que tengo es que no se si mi esquema y mis entidades estan bien generadas, en el YML me pone en las relaciones OneToOne(deberian ser 1 a N) y en las entidades no encuentra nada que haga mencion a las relaciones. Y el segundo que no se cual es el mejor metodo para recuperar esas entidades. Os explico como son las relaciones, tengo 3 tablas CLI_Clientes, PRO_Productos y PRO_Productocliente, las dos primeras se relacionan de uno a N con la tercera, es decir una empresa puede tener varios productos y un producto puede existir en varias empresas. Ahora os paso los YML que me genera para el caso de la tabla intermedia(las FK me pone OneToOne, que me huele mal), la entidad generada y como intento acceder a los datos en el controlador.
Aqui va el YML de la tabla, no entiendo porque las relaciones me las pone 1 a 1 pero bueno...
Código YML:
Ver originalAcme\DemoBundle\Entity\ProProductocliente:
type: entity
table: PRO_ProductoCliente
fields:
pidproductocliente:
id: true
type: integer
unsigned: false
nullable: false
column: PidProductoCliente
generator:
strategy: IDENTITY
precio:
type: decimal
nullable: true
column: Precio
imagen:
type: string
length: 45
fixed: false
nullable: true
column: Imagen
oneToOne:
sidproducto:
targetEntity: ProProductos
cascade: { }
mappedBy: null
inversedBy: null
joinColumns:
SidProducto:
referencedColumnName: PidProducto
orphanRemoval: false
sidcliente:
targetEntity: CliClientes
cascade: { }
mappedBy: null
inversedBy: null
joinColumns:
SidCliente:
referencedColumnName: PIdCliente
orphanRemoval: false
lifecycleCallbacks: { }
Aqui la entidad que me crea, en la cual noto que no hay ninguna referencia a ninguna relacion...
Código PHP:
<?php
namespace AcmeDemoBundleEntity;
use DoctrineORMMapping as ORM;
/**
* Acme\DemoBundle\Entity\ProProductocliente
*/
class ProProductocliente
{
/**
* @var integer $pidproductocliente
*/
private $pidproductocliente;
/**
* @var decimal $precio
*/
private $precio;
/**
* @var string $imagen
*/
private $imagen;
/**
* @var Acme\DemoBundle\Entity\ProProductos
*/
private $sidproducto;
/**
* @var Acme\DemoBundle\Entity\CliClientes
*/
private $sidcliente;
/**
* Get pidproductocliente
*
* @return integer
*/
public function getPidproductocliente()
{
return $this->pidproductocliente;
}
/**
* Set precio
*
* @param decimal $precio
*/
public function setPrecio($precio)
{
$this->precio = $precio;
}
/**
* Get precio
*
* @return decimal
*/
public function getPrecio()
{
return $this->precio;
}
/**
* Set imagen
*
* @param string $imagen
*/
public function setImagen($imagen)
{
$this->imagen = $imagen;
}
/**
* Get imagen
*
* @return string
*/
public function getImagen()
{
return $this->imagen;
}
/**
* Set sidproducto
*
* @param Acme\DemoBundle\Entity\ProProductos $sidproducto
*/
public function setSidproducto(AcmeDemoBundleEntityProProductos $sidproducto)
{
$this->sidproducto = $sidproducto;
}
/**
* Get sidproducto
*
* @return Acme\DemoBundle\Entity\ProProductos
*/
public function getSidproducto()
{
return $this->sidproducto;
}
/**
* Set sidcliente
*
* @param Acme\DemoBundle\Entity\CliClientes $sidcliente
*/
public function setSidcliente(AcmeDemoBundleEntityCliClientes $sidcliente)
{
$this->sidcliente = $sidcliente;
}
/**
* Get sidcliente
*
* @return Acme\DemoBundle\Entity\CliClientes
*/
public function getSidcliente()
{
return $this->sidcliente;
}
}
Y por ultimo como intento acceder a los datos, que no me deja porque me dice:[Semantical Error] line 0, col 97 near 'p': Error: Class Acme\DemoBundle\Entity\ProProductocliente has no association named ProProductos
Código PHP:
$repository = $this->getDoctrine()->getRepository('AcmeDemoBundle:ProProductocliente');
$query = $em->createQuery('SELECT pc, p FROM AcmeDemoBundle:ProProductocliente pc
JOIN pc.ProProductos p');
$result = $query->getResult();
Perdon por el ladrillo de codigo, y muchas gracias!!