2

以前はSymfony1.4を使用していました。今私はSymfony2を学びます:http ://symfony.com/doc/current/book/doctrine.html そして私は持っています:

    class Product
{

    /**
     * @ORM\ManyToOne(targetEntity="Category", inversedBy="products")
     * @ORM\JoinColumn(name="category_id", referencedColumnName="id")
     */
    protected $category;

    //...
}

class Category
{

    /**
     * @ORM\OneToMany(targetEntity="Product", mappedBy="category")
     */
    protected $products;

    public function __construct()
    {
        $this->products = new ArrayCollection();
    }
    //...
}

foreachのSymfony1.4では、次のものを使用できます。

    $result = findAll from Products.
foreach ($results as $result){
    echo $result->getCategory()->getName();
}

TWIGシステムとの関係(この例ではカテゴリ)を取得するにはどうすればよいですか?

{% for item in results %}
                <li><a href="{{ item.id }}">{{ item.name }} --- {{ item.category }} {{item.category.name}}</a></li>
            {% endfor %}

item.categoryとitem.category.nameが機能しません。これはドキュメントで見つかりません。

編集:

OK、わかった。私は1つの製品に関係がありません。この前にどのように保護できますか?

私は持っています:

id | name    | category
1  | first   | 1
2  | second  | NULL
3  | third   | 2

各行のカテゴリがnullでない場合、これは正常に機能しますが、リレーションにNULLがある場合、エラーが発生します。

Item "name" for "" does not exist in AcmeStoreBundle:Default:index.html.twig at line 3 

これで何ができる?

4

1 に答える 1

4

名前を出力したい場所にこれを追加します。これにより、小枝がそのエラーをスローするのを防ぐことができます。

{% if item.category.name is defined %}
    {# print the name here #}
{% endif %}
于 2012-04-12T10:09:40.907 に答える