1

many-to-many関係があります。エンティティはActorand Pys(映画とテレビ番組) です。映画のキャストが必要な場合、関係は正常に機能します (映画のすべての俳優と女優を返します) が、俳優のすべての映画を取得したい場合に問題が発生します。

これは phpmyadmin の関係です:

ここに画像の説明を入力

これは表示されるエラーです:

Key "actor" for array with keys "0" does not exist in ActorBundle:Default:actor.html.twig at line 3

ここに必要なコード:

俳優のDefaultController

class DefaultController extends Controller
{
    public function peliculasAction($actId)
    {
        $em = $this->getDoctrine()->getManager();

        $peliculas = $em->getRepository('ActorBundle:Actor')->findPeliculas($actId);

        return $this->render('ActorBundle:Default:actor.html.twig', array('peliculas' => $peliculas
                ));
    }
}

ActorRepository

class ActorRepository extends EntityRepository
{
    public function findPeliculas($actId)
    {
        $em = $this->getEntityManager();

        $consulta = $em->createQuery('
            SELECT p, d, a
            FROM ActorBundle:Actor a
            JOIN a.pys p JOIN p.director d
            WHERE a.actId = :actId
            ORDER BY p.pysAnyo DESC
        ');

        $consulta->setParameter('actId', $actId);

        return $consulta->setHint(\Doctrine\ORM\Query::HINT_CUSTOM_OUTPUT_WALKER, 'Gedmo\\Translatable\\Query\\TreeWalker\\TranslationWalker')->getResult();
    }
}

actor.html.twig

(...)
{% block title %}{{ peliculas.actor.actNombre ~ ' ' ~ peliculas.actor.actApellidos }}{% endblock %}

{% block article %}
    <section class="article">
        <div id="datos-actor-director-genero">
            <strong>{{ 'Nombre:' | trans }} </strong>{{ peliculas.actor.actNombre ~ ' ' ~ peliculas.actor.actApellidos }}</br>
            <strong>{{ 'Fecha de nacimiento:' | trans }} </strong>{{ peliculas.actor.actFechaNacimiento | localizeddate('long', 'none') }}
        </div>
        <table>
            {% for pys in peliculas %}
                <tr id="fechaVotacion">
                    <td colspan="4">{{ pys.pysAnyo }}</td>
(...)
4

1 に答える 1

1

教義コレクションを取得しています

$em->getRepository('ActorBundle:Actor')->findPeliculas($actId);

したがって、Twigpeliculasもコレクションです。最初の要素だけが必要な場合はfor..inorを実行します。peliculas[0]

peliculaskey はなくactor、数字のみ (0 : 最初のアクター、1 : 2 番目のアクターなど)

于 2013-07-25T10:05:54.833 に答える