我有一个实体提供,它与产品有一个关系,我有一个用户想要得到他对他的产品的所有报价。
我想访问在我的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
答案 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());