我有2个实体:“请求”和“合作伙伴” 请求和合作伙伴之间存在1to1关系,因此请求表中有partner_id字段 我想显示合作伙伴列表,但我需要从“请求表”中的“价格”字段中获取值
在我的控制器上,我有这个查询:
$listPartners = $em
->getRepository('OandPboBundle:Partners')
->createQueryBuilder('p')
->select('p')
->leftJoin('OandPboBundle:Requests', 'r', 'WITH', 'r.partners = p.id')
->where('p.date LIKE :date AND p.active = :active')
->setParameter('date', '%'.$year.'-'.$month.'%')
->setParameter('active', 1)
->orderBy('p.date', 'DESC')
->addOrderBy('p.id', 'DESC')
->getQuery()
->getResult();
在我的TWIG文件中,我有
{% for partners in listPartners %}
<tr>
<td>{{ partners.id }}</td>
<td>{{ partners.price }}</td>
</tr>
{% endfor %}
当然有一个错误,因为他们说“合作伙伴”中没有“价格”字段(当然我想从“请求”中获取)
有办法吗?
EDIT 我发布了我的2个实体 实体“请求”
class Requests
{ / ** * @ORM \ OneToOne(targetEntity =“OandP \ boBundle \ Entity \ Partners”,cascade = {“persist”}) * @ORM \ JoinColumn(nullable = false) * / 私人$ partners;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="price", type="integer")
*/
private $price;
我的实体“合作伙伴”
/**
*合作伙伴 * * @ORM \ Table(name =“partners”) * @ORM \ Entity(repositoryClass =“OandP \ boBundle \ Entity \ PartnersRepository”) * / 班级合作伙伴 {
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="raisonsociale", type="string", length=255)
*/
private $raisonsociale;
/**
* @var string
*
* @ORM\Column(name="firstname", type="string", length=255)
*/
private $firstname;
/**
* @var string
*
* @ORM\Column(name="lastname", type="string", length=255)
*/
private $lastname;
答案 0 :(得分:0)
如果存在单向关系,则无法获得它。我可以建议创建一个由Requests
获取Partners
对象的Twig函数,可能是这样的:
{% for partners in listPartners %}
{% set requests = requests_by_partners(partners) {# this is a custom twig function, you can create it by extending the Twig, http://symfony.com/doc/current/cookbook/templating/twig_extension.html #} %}
<tr>
<td>{{ partners.id }}</td>
<td>{{ requests.price }}</td>
</tr>
{% endfor %}
或将您的关系声明为双向关系,这样您就可以获得合作伙伴的请求:
{% for partners in listPartners %}
<tr>
<td>{{ partners.id }}</td>
<td>{{ partners.requests.price }}</td>
</tr>
{% endfor %}
答案 1 :(得分:0)
在合作伙伴实体中定义字段$请求
/**
* @ORM\OneToOne(targetEntity="OandP\boBundle\Entity\Requests", mappedBy="partners")
*/
private $requests;
在你的Twig中,只需尝试:
{% for partners in listPartners %}
<tr>
<td>{{ partners.id }}</td>
<td>{{ partners.requests.price }}</td>
</tr>
{% endfor %}