Symfony 1.4 Propel:通过外键访问 Table 数据

Symfony 1.4 Propel: Accessing Table Data via Foreign Key

我需要来自两个 MySQL table 的数据 - 我编写了一个 Propel 查询来从我的 'search' table 中检索数据。现在,我正在尝试在视图中使用 ->getItemView()->getPosition() 从我的 'item_view' table 检索数据。 search_id(搜索table主键)是item_viewtable中的外键,但item_view_id(项目视图主键)不是外键键入搜索 table。有关如何检索此数据的任何建议?下面的代码。

查看:

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

Controller:(注意:我检索用户table数据没问题,因为它的外键在搜索table.

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

在这种情况下,您是否无法从 table 中检索数据,除非它的主键是形成推进查询的 table 的外键?

感谢任何解决方案!

我终于找到了我的问题的解决方案,这与 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; ?>