Проблема доктрины PHP в массиве - PullRequest
0 голосов
/ 28 января 2010

У меня проблема с методом toArray () в Doctrine . Его не заводят мои отношения:

Первый запрос:

$q = Doctrine::getTable('posts')->find(1);
debug($q->toArray(true));

Распечатать postid = 1 без отношений

$q = Doctrine::getTable('posts')->find(1);
$q->Tags->toArray();
debug($q->toArray(true));

... выводит результаты с отношением тега.

Но я хочу сделать:

Doctrine::getTable('posts')->findAll()->toArray(true);

... и получить все отношения постов, вместо этого я получил массив строк постов.

Есть идеи о том, как заставить это работать с отношениями?

(обратите внимание, что я добавил в массив (true) для глубокого свойства.

спасибо за любую помощь

Ответы [ 3 ]

1 голос
/ 28 января 2010

Вы можете создать именованный запрос для этой таблицы со всеми связанными отношениями:

Doctrine::getTable('posts')->addNamedQuery('get.by.id.with.relations', 'DQL here...');

А потом просто используйте что-то вроде этого:

Doctrine::getTable('posts')->find('get.by.id.with.relations', array(123));
1 голос
/ 28 января 2010

Полагаю, вам нужно объединиться с запросом. В противном случае он не гидратирует полученные данные.

$q = Doctrine_Query::create()
    ->from('Post p')
    ->leftJoin('p.RelatedModel1 rm1')
    ->leftJoin('p.RelatedModel2 rm2');

$q->findAll()->toArray(true);
0 голосов
/ 28 января 2010
$q = Doctrine_Query::create()
->from('Post p')
->leftJoin('p.RelatedModel1 rm1')
->leftJoin('p.RelatedModel2 rm2');

$q->findAll()->toArray(true);

Могу ли я добавить -> предел () -> смещение () на запрос?

Мне кажется, что если я сначала создаю запрос, то findAll будет действовать так же, как execute right?

...