Symfony2中的特定查询

时间:2015-10-05 16:44:07

标签: php symfony

我有一个实体与我的产品,我有一个到多个的关系到另一个实体与每个产品的类型和价格。 在我的观点中,我想分别带来所有类型和价格的产品,做这样的事情:

{% for product in products%}
    <h2>{{ product.name }}</h2>
    <p>Description: {{ product.description }}</p>

    <table>
        <tr>

            {% for type in types %}

                <td>{{ type.type }}</td>

            {% endfor %}

         </tr>

         <tr>
             {% for type in types %}

                <td>{{ type.price }}</td>

             {% endfor %}
         </tr>
    </table>
{% endfor %}

我认为我只需要进行一次查询,在那里我找到所有产品的价格和类型。但我不知道如何。

我有这个:

Catalogo.php

Class Catalogo {

/**
     * @var string
     *
     * @ORM\Column(name="articulo", type="string", length=70, unique = true)
     */
    private $articulo;

/**
     * @ORM\OneToMany(targetEntity="Unidades", mappedBy="catalogo")
     */
    protected $unidades;

Medidas.php

Class Medidas{

/**
     * @var float
     *
     * @ORM\Column(name="medida", type="float")
     */
    private $medida;

    /**
     * @var float
     *
     * @ORM\Column(name="precio", type="float")
     */
    private $precio;

    /**
     * @ORM\ManyToOne(targetEntity="Catalogo", inversedBy="unidades", cascade={"persist"})
     * @ORM\JoinColumn(name="catalogo_id", referencedColumnName="id")
     */
    protected $catalogo;

我这样做,但它不起作用:

public function findByArticuloYPrecios()
    {
        $em = $this->getEntityManager();
        $repository = $em->getRepository('ProyectoAdminBundle:Catalogo');
        $query = $repository->createQueryBuilder('Catalogo')
        ->select("Catalogo, Unidades")
        ->from("Catalogo", "catalogo")
        ->leftJoin("catalogo.unidades", "medida")
        ->getQuery();

        try 
        {
            return $query->getResult();
        }


        catch (\Doctrine\ORM\NoResultException $e) {
            return null;
        }
    }

该函数返回null。

1 个答案:

答案 0 :(得分:0)

如果您有例如:

产品和某些类型的关系尝试这样做:

 $query = $repository->createQueryBuilder('Catalogo')
    ->select("catalogo, unidades")
    ->from("Catalogo", "catalogo")
    ->leftJoin("catalogo.unidades", "unidades")
    ->getQuery()