Ich habe dieses Szenario:
eine Entität Person, ein Repository für Person und einen ausgewählten Formulartyp.
Ich sollte mein ausgewähltes Formular nur aktiv annehmen Person.
In der Entität gibt es eine öffentliche Methode „isActive“, die prüft, ob eine Person die Berechtigung zum Zugriff auf meinen privaten Bereich hat. Diese Methode gibt „true“ oder „false“ zurück und ist keine Spalte in der Datenbanktabelle, sie wird berechnet.
Ich muss über meinen Querybuilder im Personen-Repository auf dieses Flag zugreifen.Ist es möglich?
unter dem Code meines Querybuilders im Repository.
public function getQueryBuilderForEventRegistration()
{
$queryBuilder = $this->createQueryBuilder('e')->orderBy('e.surname', 'asc')->addOrderBy('e.name', 'asc');
return $queryBuilder;
}
und die öffentliche Methode in der Entität Person, auf die ich zugreifen muss:
public function getIsActive()
{
if (empty($this->getUser()))
{
return false;
}
if (!$this->getUser()->isEnabled())
{
return false;
}
/* @var $service \Siderweb\SubscriptionBundle\Entity\UserService */
foreach ($this->getUser()->getServices() as $service)
{
if (!$service->getIsExpired())
{
return true;
}
}
return false;
}
und mein Typ:
$builder->add('personExist', 'entity', array(
'class' => 'MyAppUserBundle:Person',
'property' => 'name',
'required' => false,
'multiple' => false,
'mapped' => false,
'empty_value' => '-- New person --',
'query_builder' => function(PersonRepository $repo) use ($options) {
return $repo->getQueryBuilderForEventRegistration();
}
))
Wie vorgeschlagen bearbeite ich mein Repository wie folgt:
public function getQueryBuilderForEventRegistration(Company $company = null, Event $event = null, $emailFilter = null)
{
$queryBuilder = $this->createQueryBuilder('e')->orderBy('e.surname', 'asc')->addOrderBy('e.name', 'asc');
$people = $queryBuilder->getQuery()->execute();
$peopleToShow = array();
foreach ($people as $person)
{
if ($person->getIsActive())
{
array_push($peopleToShow, $person);
}
}
return $peopleToShow;
}
aber jetzt weiß ich nicht, wie ich dieses Array in meine typeForm einfügen soll. Irgendeine Idee?
Wie kann ich eine Entitätsmethode in einem Repository-Querybuilder aufrufen? ⇐ Php
-
- Similar Topics
- Replies
- Views
- Last post