首页 文章

Symfony2 twig打印来自2个非相关表的查询值

提问于
浏览
0

我有2个实体:“请求”和“合作伙伴”请求和合作伙伴之间存在1to1关系,因此请求表中有一个partners_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 %}

当然有一个错误,因为他们说“合作伙伴”中没有“价格”字段(当然我想从“请求”中获取它)

有没有办法做到这一点?

编辑我发布我的2个实体实体“请求”

class Requests

{/ ** * @ORM \ OneToOne(targetEntity =“OandP \ boBundle \ Entity \ Partners”,cascade = {“persist”})* @ORM \ JoinColumn(nullable = false)* / private $ 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(名称=“合作伙伴”)* @ORM \ Entity(repositoryClass =“OandP \ boBundle \ Entity \ PartnersRepository”)* / class Partners {

/**
 * @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;

2 回答

  • 0

    如果存在单向关系,则无法获得它 . 我可以建议创建一个由 Partners 获取 Requests 对象的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 %}
    
  • 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 %}
    

相关问题