Как я могу вызвать метод объекта в построителе запросов репозиторияPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как я могу вызвать метод объекта в построителе запросов репозитория

Сообщение Anonymous »

У меня есть такой сценарий:
сущность Person, репозиторий для Person и тип формы выбора.

Я должен использовать только активную форму выбора person.

В сущности есть общедоступный метод «isActive», который проверяет, есть ли у человека разрешение на доступ в мою личную область. Этот метод возвращает true или false и не является столбцом в таблице базы данных, он вычисляется.

Мне нужно получить доступ к этому флагу из моего построителя запросов в репозитории Person.Возможно ли это?
под кодом моего построителя запросов в репозитории.

Код: Выделить всё

public function getQueryBuilderForEventRegistration()
{
$queryBuilder = $this->createQueryBuilder('e')->orderBy('e.surname', 'asc')->addOrderBy('e.name', 'asc');

return $queryBuilder;
}
и общедоступный метод в сущности Person, к которому мне нужен доступ:

Код: Выделить всё

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;
}
и мой тип:

Код: Выделить всё

$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();
}
))
как было предложено, я редактирую свой репозиторий следующим образом:

Код: Выделить всё

 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;
}
но теперь я не знаю, как поместить этот массив в мою typeForm. Есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/368 ... erybuilder
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»