Doctrine. Выборка по join-енной таблице

Quidle

Полноценный новичок
Doctrine. Выборка по join-енной таблице

Доброе утро, коллеги!
Совсем недавно взялся за изучение Symfony и Doctrine и уже наткнулся на проблему.
Есть 2 таблицы: AllPartnertypes и Views, а также таблица связи "многие ко многим" между ними - PartnerView (содержащая 2 FK - айдишники основных таблиц).
Хотелось бы средствами Doctrine построить выборку из таблицы AllPartnertypes по view_id из таблицы связей.
Пока это сделано быдло-кодом...
PHP:
        $this->currentView = 1;
	$q = Doctrine_Query::create()->select('*')
			->from('AllPartnertypes pt, PartnerView pv')
			->addWhere('pv.partner_id = pt.id')
			->addWhere('pv.view_id = ?', $this->currentView);
	$this->all_types = $q->execute(array(), Doctrine_Core::HYDRATE_SCALAR);
Хотелось бы получить не массив, а коллекцию :)

-~{}~ 17.05.10 11:53:

Проблему решил :)
Нужно было просто указать алиас для соединения :)
PHP:
	$q = Doctrine_Query::create()
			->from('AllPartnertypes pt join [b]pt[/b].PartnerView pv')
			->addWhere('pv.view_id = ?', $this->afishaView);
	$this->all_types = $q->execute();
 
Дело не в том, что нужно было указать алиас, а то что в первом случае
PHP:
$q->execute(array(), Doctrine_Core::HYDRATE_SCALAR);
а во втором
PHP:
$q->execute();
, где Doctrine_Core::HYDRATE_SCALAR означает, что результатом выборки должен быть некий скаляр т.е. в вашем случае массив, а execute() без параметров, по умолчанию представляет выборку как коллекцию.
 

Quidle

Полноценный новичок
Дело не в этом.
Пришлось использовать скаляр поначалу, поскольку без указания этого параметра Doctrine выдавала ошибку.
 
Сделай во втором запросе execute() с теми же параметрами что и в первом, и в результате получишь тот же массив, что и в первом... ну или ту же ошибку ))
 
Сверху