Oznámení
Jakým způsobem řešit filtrování nad samotnou entitou?
před 5 lety

- joe
 - Člen | 250
 
Ahoj,
omlouvám se možná za trochu triviální dotaz, ale rád bych si pár
věcí ujasnil. Mám entitu Photo a User. Chtěl bych
teď jednoduše filtrovat a vytáhnout všechny fotky na základě některého
filtru, které mají restrikce ale na jinou entitu – například onen
User.
Do repozitáře PhotoRepository jsem si přidal metodu
getByFilter, která jako parametr přijímá objekt
implementující rozhraní IPhotoFilter, abych věděl, co všechno
vlastně mohu ve filtru dostat (je to ok?).
Jakým způsobem pak ale řešit join na druhou tabulku (v tomto případě tabulku uživatelů).
public function getByFilter(IPhotoFilter $filter, Query $query = null)
{
    $statement = $this->connection->select('*')->from($this->getTable());
    if($filter->userRestrict()) {
        // jde to tady nějak dynamicky doplnit?
        // ve filtru mám třeba metodu $filter->getMemberCountryId(), v tabulce user pak sloupec country_id
        $statement->leftJoin(...)->on(...);
    }
    if($query) {
        $this->processRestrictionsAndOrders($statement, $query->getRestrictions(), $query->getOrders());
    }
    return $this->createEntities($statement->fetchAll());
}
Jak dynamicky doplním o jakou tabulku jde (left join)? Jde vytáhnout i sloupce?
Jdu na vůbec správně? Jsem v tom trochu zamotaný, po době, kdy jsem dlouhou dobu na serverové straně vůbec neprogramoval.
Děkuju moc za odpovědi!
Editoval joe (28. 6. 2014 15:47)