Как сделать соединение с двумя столами? - PullRequest
0 голосов
/ 03 июня 2010

HI

Я пытаюсь перевести этот запрос:

SELECT *
FROM `reunion` , lieu
WHERE reunion.lieu_reunion = lieu.id_lieu

для продвижения запроса:

$c=new Criteria();
$c->addJoin(ReunionPeer::LIEU_REUNION,LieuPeer::ID_LIEU, Criteria::LEFT_JOIN);
$this->reunions = ReunionPeer::doSelect($c);

Но в моем шаблоне, когда я сделал print_r ($ reunions), поле "ville" (из таблицы lieu) отсутствует.

Почему ??

Ответы [ 2 ]

1 голос
/ 03 июня 2010

Если вы объявили этот внешний ключ в своей схеме базы данных, Propel создаст для вас дополнительные функции, которые выполняют объединение и объединение связанных таблиц и объектов в одном запросе:

$this->reunions = ReunionPeer::doSelectJoinLieu(new Criteria());
1 голос
/ 03 июня 2010

Прежде всего ваш запрос будет преобразован в:

SELECT * FROM `reunion` LEFT JOIN lieu ON (reunion.lieu_reunion = lieu.id_lieu);

Тогда я могу предложить это:

$c=new Criteria();
$c->clearSelectColumns();
ReunionPeer::addSelectColumns($c);
LieuPeer::addSelectColumns($c);

$c->addJoin(ReunionPeer::LIEU_REUNION,LieuPeer::ID_LIEU, Criteria::LEFT_JOIN);
$this->reunions = ReunionPeer::doSelect($c);
...