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)