【问题标题】:Many-to-many relationship in doctrine2教义中的多对多关系2
【发布时间】:2013-07-25 09:56:29
【问题描述】:

我有一个many-to-many 关系。实体是ActorPys(电影和电视节目)。当我想要电影演员时,关系工作正常(返回一部电影的所有演员和女演员)但是当我想要检索一个演员的所有电影时问题就来了。

这是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>
(...)

【问题讨论】:

    标签: symfony doctrine-orm doctrine many-to-many dql


    【解决方案1】:

    您正在从

    获得教义合集
    $em->getRepository('ActorBundle:Actor')->findPeliculas($actId);
    

    所以在 Twig 中,peliculas 也是一个集合,如果您只想要第一个元素,请使用 for..inpeliculas[0]

    peliculas 没有键 actor,只有数字(0:第一个演员,1:第二个演员,等等...)

    【讨论】:

    • 非常感谢!!最后我用双 for..in 更正了;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    相关资源
    最近更新 更多