据我所知,使用学说从数据库中获取结果将返回一个对象数组,其字段名称是实体属性名称,而不是表列名称。
我的家庭横幅实体:
class HomeBanner
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $imageName;
/**
* @ORM\Column(type="string", length=255)
*/
private $caption;
/**
* @ORM\Column(type="date")
*/
private $updatedAt;
}
在数据库表中,列名称如下:
---------------
| id |
| image_name |
| caption |
| updated_at |
---------------
在HomeBannerRepository中,我创建一个新方法并返回数组结果:
return $this->createQueryBuilder('h')->getQuery()->getArrayResult();
它给了我
[id] => 1,
[imageName] => test.jpg,
[caption] => helloworld,
[updatedAt] => 2019/06/18
但是我想要的是:
[id] => 1,
[image_name] => test.jpg,
[caption] => helloworld,
[updated_at] => 2019/06/18
是否有另一种方法可以直接使用SQL查询获得表列名称(而不是对象属性名称)的结果?
答案 0 :(得分:0)
您可以获得数组键名,并返回另一个具有新键名的数组:
$key_name = strtolower(preg_replace('/\B([A-Z])/', '_$1', $keyName));
尽管我强烈建议更改您的实体属性名称以匹配表名称