2

これは、以前に投稿されたこの質問に似ています: In Symfony2, should I use an Entity or a custom Repository

car エンティティと Wheels エンティティがあるとします。車には多くの車輪がありますが、車輪には車が 1 つあります。

私のコントローラーでは、すでに車にアクセスできます。この関係を使用して、車に属する車輪を取得しています。

$car = $this->getCar();
$wheels= $car->getWheels();

上記は機能し、現在の車に属するホイールにアクセスできます。しかし、すべての車輪を取得する代わりに、flat = 0 の車輪だけが必要です。

flat = 0 の car エンティティに属する車輪を取得するためのリポジトリよりも良い方法はありますか?

車のエンティティ (getNonFlatWheels) でゲッターを作成し、車輪をフィルタリングして、平らでない車輪だけが返されるようにすることを考えていました。

より標準的な解決策があるようです。

4

2 に答える 2

3

シモーネの答えはそれを行う必要がありますが、エンティティ構造と $wheels オブジェクトで何をしたいかによって異なります。

たとえば、最近のバージョンの Twig がインストールされていると仮定すると、flat = 0 のものだけを保持して $wheels をループできます。

{% for wheel in wheels if wheel.flat == 0 %}
    //do whatever
{% endfor %}

それが役に立つことを願っています

于 2012-06-07T08:02:44.493 に答える
2

エンティティの構造はわかりませんが、同様の状況でこのコード スニペットを使用します。CarRepository クラスに入れてみることができます。

/**
 * Get all non flat wheels
 *
 * @return Result
 */
public function getNonFlatWheels()
{
    $em = $this->getEntityManager();

    $query = $em
            ->createQuery("
                SELECT g
                FROM Acme\DemoBundle\Entity\Car c
                JOIN c.wheels w
                WHERE w.flat = :flat
            ")
            ->setParameter('flat', 0);

    return $query->getResult();
}

お役に立てば幸いです。

于 2012-06-07T05:36:56.217 に答える