Получить результат из базы данных, используя доктрину в Symfony 4 - PullRequest
0 голосов
/ 18 июня 2019

Как я знаю, получение результата из базы данных с использованием doctrine вернет массив объекта, а его именем поля будет имя свойства объекта, а не имя столбца таблицы.

My HomeBanner Entity:

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 голосов
/ 18 июня 2019

вы можете получить имя ключа массива и вернуть другой массив с новыми именами ключей:

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

хотя я настоятельно рекомендую изменить имена свойств вашей сущности в соответствии с именем таблицы

...