
My entities
Manufacturer.php
- Code: Select all
/**
* pdias\bleBundle\Entity\Manufacturer
*
* @ORM\Table(name="manufacturer")
* @ORM\Entity
*/
class Manufacturer
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string $name
*
* @ORM\Column(name="name", type="string", length=32, nullable=false)
*/
private $name;
/**
* @var string $image
*
* @ORM\Column(name="image", type="string", length=64, nullable=false)
*/
private $image;
/**
* @var datetime $dateadded
*
* @ORM\Column(name="dateadded", type="datetime", nullable=false)
*/
private $dateadded;
/**
* @var datetime $lastmodified
*
* @ORM\Column(name="lastmodified", type="datetime", nullable=false)
*/
private $lastmodified;
/**
* @var text $url
*
* @ORM\Column(name="url", type="text", nullable=true)
*/
private $url;
/**
* @var manufacturerDescription
*
* @ORM\OneToMany(targetEntity="manufacturerDescription", mappedBy="manufacturerDescription") */
private $manufacturerDescription;
public function __construct()
{
$this->manufacturerDescription = new \Doctrine\Common\Collections\ArrayCollection();
}
....
}
Language.php
- Code: Select all
/**
* playme\bleBundle\Entity\Language
*
* @ORM\Table(name="language")
* @ORM\Entity
*/
class Language
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string $name
*
* @ORM\Column(name="name", type="string", length=100, nullable=false)
*/
private $name;
/**
* @var string $code
*
* @ORM\Column(name="code", type="string", length=2, nullable=false)
*/
private $code;
public function __construct()
{
}
....
}
ManufacturerDescription.php
- Code: Select all
/**
* playme\bleBundle\Entity\ManufacturerDescription
*
* @ORM\Table(name="manufacturer_description")
* @ORM\Entity
*/
class ManufacturerDescription
{
/**
* @var integer $manufacturer
*
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Manufacturer", inversedBy="manufacturerDescription")
*/
private $manufacturer;
/**
* @var integer $language
*
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Language", inversedBy="id")
*/
private $language;
/**
* @var text $description
*
* @ORM\Column(name="description", type="text", nullable=false)
*/
private $description;
public function __construct(Manufacturer $manufacturer, Language $language, $description = "")
{
$this->manufacturer = $manufacturer;
$this->language = $language;
$this->description = $description;
}
....
}
In MySql i do this query and works ok...
- Code: Select all
SELECT manufacturer.id, manufacturer.name, manufacturer_description.description, language.code
FROM manufacturer INNER JOIN (`language` INNER JOIN manufacturer_description ON language.id = manufacturer_description.language_id) ON manufacturer.id = manufacturer_description.manufacturer_id WHERE manufacturer.id=42 AND language.code="pt";
Can someone help me how do i do this query using querybuilder or createquery...
I tried with CreateQuery:
- Code: Select all
$query = $em->createQuery('SELECT m FROM playmebleBundle:Manufacturer m INNER JOIN (
playmebleBundle:Language l INNER JOIN playmebleBundle:ManufacturerDescription md ON l.id = md.language_id
) ON m.id = md.manufacturer_id
WHERE m.id=42 AND l.code="pt"');
but getting this error
- Code: Select all
[Semantical Error] line 0, col 103 near 'playmebleBundle:Language': Error: Identification Variable ( used in join path expression but was not defined before.
also tried a different approach to see if any results obtained (but this is not the query I want), just to test ...
- Code: Select all
$dql = 'SELECT m FROM playmebleBundle:Manufacturer m JOIN m.manufacturerDescription md WHERE m.id = 42';
$em = $this->getDoctrine()->getEntityManager();
$query = $em->createQuery($dql);
but getting this error
- Code: Select all
Notice: Undefined index: manufacturerDescription in C:\wamp\www\ble\vendor\doctrine\lib\Doctrine\ORM\Query\SqlWalker.php line 747
At this point I do not know whether they are just problems with the construction of the query ... or if the entities are not well defined (their relationship) ...
So I come to ask for your help ...
Thank you,
Paulo
