Php 从ORM QueryBuilder中实体的两列中获取数据

Php 从ORM QueryBuilder中实体的两列中获取数据,php,symfony,orm,doctrine,dql,Php,Symfony,Orm,Doctrine,Dql,我在使用Doctrine queryBuilder获取数据时遇到了这样的问题 如何更改此SQL: SELECT c.*, ct.value as name_pl FROM cities c LEFT JOIN cities_translations ct ON c.id = ct.city_id AND ct.language_code = 'pl' (正在从2个表中选择列表中获取列出的数据) 使用条令查询生成器导入DQL 我已经向该实体提供了: /** * @ORM\Entity() *

我在使用Doctrine queryBuilder获取数据时遇到了这样的问题

如何更改此SQL:

SELECT c.*, ct.value as name_pl
FROM cities c
LEFT JOIN cities_translations ct ON c.id = ct.city_id AND ct.language_code = 'pl'
(正在从2个表中选择列表中获取列出的数据)

使用条令查询生成器导入DQL

我已经向该实体提供了:

/**
 * @ORM\Entity()
 */
class City
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue
     */
    public $id

    /**
     * @ORM\Column(type="string", length=255)
     */
    public $slug;

    /**
     * @ORM\Column(type="string", length=255)
     */
    public $name;

    /**
     * @ORM\OneToMany(targetEntity="CityTranslation", mappedBy="city")
     */
    public $translations;
}
并使用查询生成器进行查询:

$queryBuilder
        ->select('c, ct.value as name_pl')
        ->from('cities', 'c')
        ->leftJoin('c.translations', 'ct', Join::WITH, 'ct.language_code = pl')
        ->getQuery()
        ->getResult();
其效果是,它正确地从数据库查询数据,但在将数据映射到对象时失败。它返回包含两项的数组(第一项是城市对象,第二项是名称字符串和值),插入城市对象列表(名称作为城市对象的字段)

尝试:

$queryBuilder
        ->select('c', 'c')
        ->from('cities', 'c')
        ->leftJoin('c.translations', 'ct', Join::WITH, 'ct.language_code = pl')
        ->addSelect('ct', 'ct')
        ->addSelect('ct.value', 'name_pl')
        ->getQuery()
        ->getResult();

你想从查询中得到什么?@AndrewVakhniuk query很好。它正确地从数据库中获取数据。问题在于将数据映射到对象时。我没有用字段名\ pl创建对象City,而是得到两个元素的数组:City对象和单独的name \ pl值。