获得类别标题和仅属于该类别的元素 - symfony

时间:2011-09-07 16:09:37

标签: symfony-1.4 doctrine-query

我希望在indexSuccess.php类别标题和该类别的元素中显示。这是我的两张桌子:

SgpsCategories:
  columns:
    description: { type: string(255), notnull: true }

SgpsCertificats:
  actAs: { Timestampable: ~ }
  columns:
    categories_id: { type: integer, notnull: true }
    titre: { type: string(255), notnull: true }
    type: { type: string(255), notnull: true }
    taille: { type: string(50), notnull: true }
    chemin: { type: string(255), notnull: true }
  relations:
    SgpsCategories: { onDelete: CASCADE, local: categories_id, foreign: id }

到目前为止,我在行动中做到了这一点:

 public function executeIndex(sfWebRequest $request)
  {


    $this->categories = Doctrine_core::getTable('SgpsCategories')
        ->createQuery('b')
        ->execute();

    $this->sgps_certificatss = Doctrine_Core::getTable('SgpsCertificats')
      ->createQuery('a')
      ->execute();
  }

我在indexSuccess.php中做了这个:

<?php foreach ($categories as $categorie): ?>

    <div id="titulo-certificado"><?php echo $categorie->getDescription(); ?></div>

    <?php foreach ($sgps_certificatss as $sgps_certificats): ?>

      <?php echo $sgps_certificats->getTitre()."<br>";?>

    <?php endforeach; ?>
<?php endforeach; ?>

我在这里做错了什么?谢谢

1 个答案:

答案 0 :(得分:0)

在获取数据时,你没有使用两个表之间的关系。像你一样查询需要从数据库所有类别和所有证书(不是所有类别的证书)。

如果您只想在页面中显示包含所有元素的一个类别,则应更改查询以仅提取一个类别(请参阅 - &gt; fetchOne())指定您需要的类别,然后在其中使用其ID第二个查询的子句。或者只是加入他们只使用一个查询。

如果你想在一个页面中显示所有类别及其元素,我会在关系SgpsCategories中添加一个foreignAlias,所以从SgpsCategories你可以拥有他所有的元素:

SgpsCategories:
  columns:
    description: { type: string(255), notnull: true }

SgpsCertificats:
  actAs: { Timestampable: ~ }
  columns:
    categories_id: { type: integer, notnull: true }
    titre: { type: string(255), notnull: true }
    type: { type: string(255), notnull: true }
    taille: { type: string(50), notnull: true }
    chemin: { type: string(255), notnull: true }
  relations:
    SgpsCategories: { onDelete: CASCADE, local: categories_id, foreign: id, foreignAlias: Certificats }

所以你的行动:

public function executeIndex(sfWebRequest $request)
{
  $this->categories = Doctrine_core::getTable('SgpsCategories')
      ->createQuery('b')
      ->execute();
}

你的模板:

<?php foreach ($categories as $categorie): ?>

    <div id="titulo-certificado"><?php echo $categorie->getDescription(); ?></div>

    <?php foreach ($categorie->getCertificats() as $sgps_certificats): ?>

      <?php echo $sgps_certificats->getTitre()."<br>";?>

    <?php endforeach; ?>
<?php endforeach; ?>