Doctrine 2 – pomoc s dotazem
- kejlicz
- Člen | 201
Ahoj všichni.
Zkouším si modelovat pomocí Doctrine 2 nějaké složitější vazby a zaboha nemůžu přijít na to, jak se dotazovat v tomto případě.
Mám entity Article a ta má oboustrannou vazbu ManyToMany na entitu Category.
U Category mám takto jednoduše udělané vazby na rodičovaskou kategorii a podkategorie
/**
* @ORM\OneToMany(targetEntity="Category", mappedBy="parent_category")
**/
private $subCategories;
/**
* @ORM\ManyToOne(targetEntity="Category", inversedBy="subCategories")
* @ORM\JoinColumn(name="parent_category_id", referencedColumnName="id")
**/
private $parent_category;
Když udělám dotaz na články v nějaké kategorii např.
$query = $this->em
->createQuery("SELECT a FROM \App\Entities\Article a
JOIN a.categories c
WHERE c.slug = :cat");
$query->setParameter('cat', $actualCategory->slug);
, tak to funguje.
Nedaří se mi ale přijít na to, jak udělám dotaz, zda je článek
v určité kategorii nebo v její podkategoriích.
Napadlo mě něco jako
$query = $this->em
->createQuery("SELECT a FROM \App\Entities\Article a
JOIN a.categories c
JOIN c.subCategories s
WHERE c.slug = :cat OR s.slug = :cat");
$query->setParameter('cat', $this->template->actualCategory->slug);
ale to nejde. Zkoušel jsem toho dost, ale v těchto složitějších doatzech se nějak ztrácím a asi mi něco uniká.
Díky za nakopnutí.
- Luděk Veselý
- Člen | 29
Problem bude nejspis v miste JOIN c.subCategories s
, kde by mel
byt LEFT JOIN
. Pokud pouzijes jen JOIN
tak se ti na
kategorii najoinuje podkategorie pouze u kategorii, ktere maj podkategorii.