получить категории заголовков и элементов только этой категории - symfony - PullRequest
0 голосов
/ 07 сентября 2011

Я хочу показать в 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 голосов
/ 28 ноября 2011

Ну, вы не используете отношения между двумя таблицами при получении данных.И запрос, как и вы, берет из базы данных все категории и все сертификаты (не все сертификаты для категории).

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