Мне нужны данные из двух таблиц 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);
Это тот случай, когда вы не можете извлечь данные из таблицы, если ее первичный ключ не является внешним ключом таблицы, для которой сформирован запрос на перемещение?
Любые решения приветствуются!
Наконец-то я нашел решение своей проблемы, которая имела меньшее отношение к 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; ?>
Других решений пока нет …