Ну, вы не используете отношения между двумя таблицами при получении данных.И запрос, как и вы, берет из базы данных все категории и все сертификаты (не все сертификаты для категории).
Если вы хотите показать только одну категорию вНа странице со всеми его элементами вы должны изменить свои запросы, чтобы выбрать только одну категорию (см. -> fetchOne ()), указав, какая категория вам нужна, а затем использовать ее идентификатор в предложении where для второго запроса.Или просто присоединитесь к ним, чтобы использовать только один запрос.
Если вы хотите показать все категории и их элементы, на одной странице я бы добавил ForeignAlias к отношению SgpsCategories, чтобы из 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; ?>