2015-06-22 3 views
0

Как отключить ленивую загрузку в доктрине 2?Отключить ленивую загрузку доктрины zend framework?

$em = $this->getEntityManager(); 
$repo = $em->getRepository('Application\Entity\StudentClass'); 
$result = $repo->findBy(array('pkStudentClass' => '1')); 

print_r($result); 

Я получаю здесь слишком много данных, и скрипт терпит неудачу.

+1

Вы всегда будете получать объекты от доктрины. '$ result' будет' Doctrine \ ORM \ PersistentCollection' (который заботится о ленивой загрузке). Используйте '$ result-> toArray()' для возврата массива всех объектов 'Application \ Entity \ StudentClass' в коллекции. – AlexP

+0

это правда, спасибо. – user3911183

ответ

1

Пожалуйста, используйте следующий запрос для получения данных Вы можете получить здесь необходимую колонку и получить необходимые записи.

$query = $this->getEntityManager()->createQueryBuilder() 
        ->select('U.id,U.name') 
        ->from('Application\Entity\StudentClass', 'U') 
        ->where('U.pkStudentClass = :pkStudentClass') 
        ->setParameter('pkStudentClass', 1) 
        ->setMaxResults(20); 
        ->orderBy('id', 'DESC') 
        ->getQuery(); 

$ result = $ query-> getScalarResult();

+0

Я знаю, но иногда нам нужно восстановить весь объект. – user3911183

Смежные вопросы