如何根据ID提取信息?

时间:2015-05-26 14:25:31

标签: symfony

我有一个实体Article20000Information,其中包含以下几个字段:iddescriptionmanufacturer_idsupplier_id

我有另一个实体Organisation。它有一个公司(制造商和供应商)列表,每个公司都有一个id

我还有一个页面,用于呈现Article20000Information数据的列表。目前,它只是在表格中显示数据:

| id | Description | Manufacturer | Supplier | Price  |
|----|-------------|--------------|----------|--------|
| 1  |   thing1    |      2       |    5     |  34    |
| 2  |   thing2    |      5       |    2     |  23    |
| 3  |   thing3    |      3       |    4     |  25    |

我需要的是制造商和供应商列根据显示的ID显示name表中的organisation值。

最好的方法是什么?

3 个答案:

答案 0 :(得分:1)

知道了!

我需要多个别名,我已经猜到了,但我还需要给它们AS,以便它们出现不同的列名。这反过来让twig呈现标签。

<?php

namespace Regenerys\QMSBundle\Entity;

use Doctrine\ORM\EntityRepository;

class Article20000InformationRepository extends EntityRepository
{
    public function findStuff()
    {
        return $this->getEntityManager()
            ->createQuery(
                'SELECT 
    A.id,
    A.articleNumber,
    A.description,
    B.name as manufacturer,
    C.name as supplier
FROM 
    RegenerysQMSBundle:Article20000Information A
    LEFT OUTER JOIN RegenerysQMSBundle:Organisation B WITH B.id = A.manufacturer 
    LEFT OUTER JOIN RegenerysQMSBundle:Organisation C WITH C.id = A.supplier '

            )
            ->getResult();
    }
}

感谢@Alexandru的DQL帮助。

答案 1 :(得分:0)

您需要根据g.colorsMap_["SeriesID"] = "#FFFFFF"; g.updateOptions({}); g.user_attrs_.colors[index] = "#FFFFFF"; // Where index is index number of the SeriesID Dygraph.updateDeep(g.user_attrs_, g.user_attrs_); 条件加入这两个表。

id

More info on table joins.

答案 2 :(得分:0)

如果您使用的是教义,那么正确的方法是创建一个Repository类,然后编写由@ K139提出的加入代码,但在DQL中:

class Article20000InformationRepository extends EntityRepository
{
    public function findAll()
    {
        return $this->getEntityManager()
            ->createQuery(
                'SELECT A.id, A.Description, B.ManufacturName, B.supplierName FROM AppBundle:Article20000Information A
                 LEFT OUTER JOIN AppBundle:Organisation B ON B.id = A.id '
            )
            ->getResult();
    }
}

然后在您的控制器中,您将使用它:

$articles = $em->getRepository('AppBundle:Article20000Information')->findAll();