2015-03-12 2 views
1

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

Вид:

<?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); 

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

Любые решения оцениваются!

ответ

0

Я, наконец, нашел решение своей проблемы, которая имела меньшее отношение к 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; ?> 
Смежные вопросы