Uestla/YetORM M:N order by
- Томас
- Člen | 85
Dobrý den,
používám YetORM https://github.com/uestla/YetORM a
řeším s tím už delší dobu takový problém.
Jak řešit order by přímo v entitě, když chci získat data co
jsou M:N?
Můj kód je asi takový:
class CategoryEntity extends Entity
{
public function getProducts()
{
$selection = $this->toRecord()->related("product_x_category", "category_id");
return (new \YetORM\EntityCollection(
$selection,
self::getClass("ProductEntity"),
"products",
"product_id"
));
}
}
Funguje to krásně, nicméně jak do toho nacpat order by, aby produkty byly seřazeny podle jejich pozic? Zkoušel jsem logicky následující:
return (new \YetORM\EntityCollection(
$selection,
self::getClass("ProductEntity"),
"products",
"product_id"
))->orderBy("position");
Nicméně mi vyjede hláška, že tabulka neobsauje sloupec position, protože se snaží získat position z tabulky product_x_category, kde samozřejmě není – je až v products…
Věděl by někdo jak na to? Je mi jasné, že to lze jednoduše vyřešit pomocí repository, ale potřeboval bych zachovat to, že se mi vrátí objekty třídy ProductEntity a ne DB rows.
Děkuju za Vaše rady.
- Pavel Kravčík
- Člen | 1196
EntityCollection má orderBy(). https://github.com/…llection.php
Problém je návrh databáze. YetORM je lightweight, na tohle použij Doctrine.
- Томас
- Člen | 85
Pavel Kravčík napsal(a):
EntityCollection má orderBy(). https://github.com/…llection.php
Problém je návrh databáze. YetORM je lightweight, na tohle použij Doctrine.
takže nejednodušší způsob v tuto chvíli je napsat si dotaz sám v repository a hold se spokojit s tím, že mi to nevrátí entity?
(nemůžu teď convertovat na doctrine a potřebuju to mít hotové ideálně včera :D)