Проблема с доктриной - PullRequest
       13

Проблема с доктриной

1 голос
/ 15 августа 2010

Эй, у меня есть некоторые проблемы при создании моего запроса в доктрине:

Мой sql-запрос выглядит так:

select *
from fs_employee
where role_id = ?
and
id not in
(select e.id
from fs_employee e, fs_plane p
where role_id = ?
and p.pilot_id = e.id
and e.player_id = ?
)

Итак, я хочу выбрать каждого пилотного сотрудника с role_id = 20, чтобыне был назначен на самолет.

Мой запрос доктрины:

Doctrine_Query::Create()
->from('FsEmployee e')
->where('e.role_id = ?', $role)
->andWhere('e.id NOT IN (SELECT e.id FROM FsEmployee e, e.FsPlane p where e.role_id = ? and e.player_id = ?', $role, $id)
->execute();

Моя ошибка:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 261904 bytes) in C:\sxampp\php\PEAR\symfony\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Query\Tokenizer.php on line 329

Спасибо за помощь, Дэвид

Ответы [ 2 ]

1 голос
/ 15 августа 2010

Поскольку мой комментарий и ответ jeremiahd указывают на проблему, я напишу здесь еще раз:

Вы забыли закрытие ) в своем подзапросе. Это должно выглядеть так:

->andWhere('e.id NOT IN (SELECT e.id FROM FsEmployee e, e.FsPlane p where e.role_id = ? and e.player_id = ?)', $role, $id)
0 голосов
/ 15 августа 2010

Вы можете попробовать добавить -> limit (20) к вашей записи, чтобы получить первые 20 записей, или использовать sfDoctrinePager в Symfony (если вы его используете) для обработки других записей. В Doctrine также есть встроенный Doctrine_Pager .

PS. попробуйте использовать Doctrine_Query :: getSqlQuery () для получения необработанного SQL-запроса.

...