Symfony2 - 与实体关系和学说请求有关的问题

时间:2014-10-21 12:27:20

标签: symfony doctrine-orm

我有一个实体提供,它与产品有一个关系,我有一个用户想要得到他对他的产品的所有报价。

我想访问在我的sql请求中通过商品制作产品的用户。

所以它就是这样的:

$user = $this->getUser();
$listofofferusergot = $em->getRepository('blabla:Offer')->findBy(array('product.autor.id' => $user->getId()));

(ps:Offer与产品有OneToOne关系) (ps2:我写的东西不起作用;))

所以问题是一般的我可以简单地访问一个子字段(就像我的情况下的id)或者我必须做一个$ em-> createQuery()的东西

我希望我的问题可以理解

提供课程:

<?php

namespace Nemi\TwigBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Offer
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Nemi\TwigBundle\Entity\OfferRepository")
 */
class Offer
{
     /**
     * @ORM\ManyToOne(targetEntity="Nemi\TwigBundle\Entity\Product")
     * @ORM\JoinColumn(nullable=false)
     */
     private $product;

     ...
}

产品类:

namespace Nemi\TwigBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Product
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Nemi\TwigBundle\Entity\ProductRepository")
 */
class Product
{
    /**
     * @ORM\ManyToOne(targetEntity="Nemi\UserBundle\Entity\User")
     * @ORM\JoinColumn(nullable=false)
     */
    private $autor;

    ....

 }

ty guys

1 个答案:

答案 0 :(得分:1)

您可以在OfferRepository中添加此方法:

public function findOffersByProductAuthor(User $user)
{
    return $this->createQueryBuilder('offer')
         ->join('offer.product', 'product')
         ->join('product.author', 'author')
         ->where('author = :user')
         ->setParameter('user', $user)
         ->getQuery()
         ->getResults();
}

然后,致电:

$em->getRepository('blabla:Offer')-> findOffersByProductAuthor($this->getUser());