使用Symfony 4中的学说从数据库中获取结果

时间:2019-06-18 03:44:57

标签: symfony doctrine

据我所知,使用学说从数据库中获取结果将返回一个对象数组,其字段名称是实体属性名称,而不是表列名称。

我的家庭横幅实体:

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查询获得表列名称(而不是对象属性名称)的结果?

1 个答案:

答案 0 :(得分:0)

您可以获得数组键名,并返回另一个具有新键名的数组:

$key_name = strtolower(preg_replace('/\B([A-Z])/', '_$1', $keyName));

尽管我强烈建议更改您的实体属性名称以匹配表名称