yetorm – entitycollection where

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Томас
Člen | 85
+
0
-

Dobrý den,

chtěl bych se zeptat, jak zle uplatnit WHERE metodu v entitě (u entity collection).

Mám tabulku products:

-------------
| id, price |
-------------

a tabulku product_x_category

------------------------------
| id, product_id, category_id|
------------------------------

A jednoduše chci všechny produkty v kategorii s ID 51, ale pouze ty, kde cena je větší než 0. Jak to lze udělat bez použití vlastního selectu v repository? A jde to vůbec udělat?

Mám takovýhle kód v categoryentity:

public function getProducts(){
    $selection = $this->toRecord()->related("product_x_category", "category_id");
    return new EntityCollection($selection, ProductEntity:class, "products", "product_id");
}

Where na selection uplatnit nemůžu, protože tam zmínka o tabulce products vůbec není a na v entitycollection je pouze limit a order by… poradil by mi někdo prosím, jak na to?

Díky


edit:

představoval jsem si něco takového:

$entitycollection->where("price > ?", 0)->orderBy("created DESC")->limit(16,0);

Editoval Томас (22. 3. 2016 18:47)

Томас
Člen | 85
+
+1
-

Tak už jsem to vyřešil, stačil mi foreign key na M:N sloupečky… a potom už jen

$selection = $this->toRecord()->related(
            "product_x_category",
            "category_id"
        )->where("product_id.price != ?", 0);

Tak snad to někomu pomůže.