Symfony2 - 如何打印连接表输出 [英] Symfony2 - how to print joined tables output

查看:165
本文介绍了Symfony2 - 如何打印连接表输出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个连接的表。随着的print_r 我收到这样的事情

 数组

[0] => GameShelf\UsersBundle\Entity\Ownership对象

[id:GameShelf\UsersBundle\Entity\Ownership:private] => 1
[type:GameShelf\UsersBundle\Entity\Ownership:private] => 1
[time:GameShelf\UsersBundle\Entity\Ownership:private] => 2010- 02-05 11:00:00
[游戏:GameShelf\UsersBundle\Entity\Ownership:private] => Doctrine\ORM\PersistentCollection对象

[快照:Doctrine\ORM\PersistentCollection:private] => Array

[0] => GameShelf\GamesBundle\Entity\Game对象

[ID:GameShelf\GamesBundle \\Entity\Game:私人] =→1个
[PARENT_ID:GameShelf\GamesBundle\Entity\Game:私人] => 0
[name:GameShelf\GamesBundle\Entity\Game:private] =>有人
[slug:GameShelf\GamesBundle\Entity\Game:private] =>有人
[reldate:GameShelf\GamesBundle\Entity\Game:private] => 2010-10-10
[流派:GameShelf\GamesBundle\Entity\Game:private] => 1,2
[platform:GameShelf\GamesBundle\Entity\Game:private] => 1,2
[开发者:GameShelf\GamesBundle\Entity\Game:private] => 1,2
[description:GameShelf\GamesBundle\Entity\Game:private] => Lipsum
[desc_src:GameShelf\GamesBundle\Entity\Game:private] => http://onet.pl
[rate:GameShelf\GamesBundle\Entity\Game:private] => 0
[所有权:GameShelf\GamesBundle\Entity\Game:private] => GameShelf\UsersBundle\Entity\Ownership对象
* RECURSION *



我想要的是打印名称:GameShelf\GamesBundle\Entity\Game:private] =>有人,但我不知道如何。我用嫩枝,我现在的模板是:

  {%为游戏游戏%} 
{{game.id }}
{%ENDFOR%}

但它仅输出 id from 所有权表。



我的控制器:

  public function getOwnedAction($ type = 1 ,$ user = 1){
$ games = $ this-> getDoctrine()
- > getRepository('GameShelfUsersBundle:Ownership')
- > getOwned();
echo'< pre>';
// print_r($ games);
echo'< / pre>';

return $ this-> render('GameShelfUsersBundle:Default:index.html.twig',
array(
'games'=> $ games-> getGame ()
));
}

Repo:

  public function getOwned($ type = 1,$ user = 1){
$ query = $ this-> getEntityManager()
- > createQuery
SELECT o,g FROM GameShelfUsersBundle:所有权o
JOIN o.game g
WHERE o.type =:type
')
- > setParameter('type ,$型);

try {
return $ query-> getResult();
} catch(\Doctrine\ORM\NoResultException $ e){
return null;
}
}

只有当我设置 getSingleResult 而不是 getResult

解决方案

在Twig中,您使用相同的方法来访问实体信息。



在查看递归后,您可能需要这样做:

  {%业主游戏%} 
{%在owners.getGame()%游戏}
{{ game.getId()}}
{{game.getName()}}
{{game.getParentId()}}
{#etc ...#}
{ %endfor%}
{%endfor%}


I have two joined tables. With print_r I am getting something like this

Array
(
    [0] => GameShelf\UsersBundle\Entity\Ownership Object
        (
            [id:GameShelf\UsersBundle\Entity\Ownership:private] => 1
            [type:GameShelf\UsersBundle\Entity\Ownership:private] => 1
            [time:GameShelf\UsersBundle\Entity\Ownership:private] => 2010-02-05 11:00:00
            [game:GameShelf\UsersBundle\Entity\Ownership:private] => Doctrine\ORM\PersistentCollection Object
                (
                    [snapshot:Doctrine\ORM\PersistentCollection:private] => Array
                        (
                            [0] => GameShelf\GamesBundle\Entity\Game Object
                                (
                                    [id:GameShelf\GamesBundle\Entity\Game:private] => 1
                                    [parent_id:GameShelf\GamesBundle\Entity\Game:private] => 0
                                    [name:GameShelf\GamesBundle\Entity\Game:private] => Somebody
                                    [slug:GameShelf\GamesBundle\Entity\Game:private] => somebody
                                    [reldate:GameShelf\GamesBundle\Entity\Game:private] => 2010-10-10
                                    [genres:GameShelf\GamesBundle\Entity\Game:private] => 1,2
                                    [platforms:GameShelf\GamesBundle\Entity\Game:private] => 1,2
                                    [developers:GameShelf\GamesBundle\Entity\Game:private] => 1,2
                                    [description:GameShelf\GamesBundle\Entity\Game:private] => Lipsum
                                    [desc_src:GameShelf\GamesBundle\Entity\Game:private] => http://onet.pl
                                    [rate:GameShelf\GamesBundle\Entity\Game:private] => 0
                                    [ownership:GameShelf\GamesBundle\Entity\Game:private] => GameShelf\UsersBundle\Entity\Ownership Object
 *RECURSION*
                                )

                        )

What I want, is to print name:GameShelf\GamesBundle\Entity\Game:private] => Somebody, but I don't know how. I use Twig, my current template is:

{% for game in games %}
{{ game.id }}
{% endfor %}

But it outputs only id from Ownership table.

My controller:

public function getOwnedAction($type = 1, $user = 1) {
        $games = $this->getDoctrine()
            ->getRepository('GameShelfUsersBundle:Ownership')
            ->getOwned();
        echo '<pre>';
        //print_r($games);
        echo '</pre>';

        return $this->render('GameShelfUsersBundle:Default:index.html.twig',
            array(
                'games' => $games->getGame()
            ));
    }

Repo:

public function getOwned($type = 1, $user = 1) {
        $query = $this->getEntityManager()
            ->createQuery('
                SELECT o, g FROM GameShelfUsersBundle:Ownership o
                JOIN o.game g
                WHERE o.type = :type
            ')
            ->setParameter('type',$type);

        try {
            return $query->getResult();
        } catch (\Doctrine\ORM\NoResultException $e) {
            return null;
        }
    }

It works only when I set getSingleResult instead of getResult.

解决方案

In Twig you use the same methods to access Entity information.

[edit] After looking at the recursion, you might need to do it this way:

{% for owners in games %}
    {% for game in owners.getGame() %}
        {{ game.getId() }}
        {{ game.getName() }}
        {{ game.getParentId() }}
        {# etc... #}
    {% endfor %}
{% endfor %}

这篇关于Symfony2 - 如何打印连接表输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆