Symfony 1.4 Propel: доступ к данным таблицы через внешний ключ

Мне нужны данные из двух таблиц MySQL — я написал запрос Propel для извлечения данных из моей таблицы поиска. Теперь я пытаюсь извлечь данные из моей таблицы item_view, используя ->getItemView()->getPosition() в пределах видимости. Search_id (первичный ключ таблицы поиска) является внешним ключом в таблице item_view, но item_view_id (первичный ключ представления элемента) не является внешним ключом в таблице поиска. Любые предложения о том, как получить эти данные? Код ниже.

Посмотреть:

<?php foreach ($queries as $query) : ?>
<tr>
<td><?php echo $query->getTs(); ?></td>
<td><?php echo $query->getUser() ? $query->getUser()->getEmail() : ""; ?></td>
<td><?php echo $query->getTerm(); ?></td>
<td><?php echo $query->getResultCount(); ?></td>
<td><?php echo **$query->getItemViews()->getItem()->getPartName()**; ?></td>
<td><?php echo **$query->getItemViews()->getPosition()**; ?></td>
</tr>
<?php endforeach; ?>

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

$c = new Criteria();
$c->addDescendingOrderByColumn(SearchPeer::TS);
$this->queries = SearchPeer::doSelect($c);

Это тот случай, когда вы не можете извлечь данные из таблицы, если ее первичный ключ не является внешним ключом таблицы, для которой сформирован запрос на перемещение?

Любые решения приветствуются!

1

Решение

Наконец-то я нашел решение своей проблемы, которая имела меньшее отношение к Propel и Symfony и все, что связано с моим пониманием реляционных баз данных.

Может быть множественный Строки item_view для одной строки поиска. ->getItemView() Я пытался изначально использовать должно быть ->getItemViews() потому что есть отношения один ко многим. Он также должен быть вложен как собственный цикл foreach для получения значений. Правильный код ниже:

Посмотреть:

<?php foreach ($queries as $query) : ?>
<tr>
<td><?php echo $query->getTs(); ?></td>
<td><?php echo $query->getUser() ? $query->getUser()->getEmail() : ""; ?></td>
<td><?php echo $query->getTerm(); ?></td>
<td><?php echo $query->getResultCount(); ?></td>
<?php foreach ($query->getItemViews() as $iav) : ?>
<td><?php echo $iav->getItem()->getPartName(); ?></td>
<td><?php echo $iav->getPosition(); ?></td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]