1

Symfony2.3.​​4 と Doctrine を使用しています。

クラス Edition との ManyToMany 関係を持つクラス Student があります。

今、私の StudentController には、この IndexAction($edition_id) があり、DB 内のすべての学生ではなく、指定されたエディション ID に関連する学生のみを一覧表示します。

$entities = $em->getRepository('PersonBundle:Student')->findBy(array(
    ????????
));

$edition_id で使用する何らかの基準を考えていますが、思いつきません。

ヒントをいただければ幸いです。

@dmnptr: 私はそれを試みています。

あなたが書いたその関数をコントローラーと追加したメソッド IndexAction($edition) に入れました

$students = this->findAllByEdition($edition);

問題は、パラメーター $edition が次のような twig テンプレートから来ていることです。

<a href="{{ path('student', { 'edition': entity}) }}"</a>

Edition オブジェクトを保持するエンティティです。

しかし、私がそれを行うと、このエンティティは __toString() メソッドを返します。これは、あなたが私に与えた関数が使用するエディション自体ではなく、エディションの名前の文字列を意味します。

さて、__toString() メソッドではなく、テンプレートからオブジェクト自体を取得する方法をご存知ですか、ありがとう...

4

1 に答える 1

4

カスタム リポジトリ メソッドを使用する必要があります。$editionID だけでなく、パラメーターとして渡します。このようなもの:

public function findAllByEdition($edition)
{
    $em = $this->getEntityManager();

    $queryText  = "SELECT s FROM PersonBundle:Student s ";
    $queryText .= "WHERE :edition MEMBER OF s.editions";

    $query = $em->createQuery($queryText);
    $query->setParameter('edition', $edition)

    return $query->getResult();
}
于 2014-03-28T21:35:42.620 に答える