Как я могу превратить объект в массив (Symfony)?

Вот как я создаю свой массив fields:

public function index($slug, Request $request, UserPasswordEncoderInterface $passwordEncoder)
  {
    $page = $this->getDoctrine()->getRepository(Pages::class)->findOneBy(['slug'=>$slug]);
    $fields =  (array) $page;
    return $this->render('mypage.html.twig', ['page' => $page, 'fields' => $fields]);
  }

Результат:

array:3 [▼
  "\x00App\Entity\Pages\x00id" => 3
  "\x00App\Entity\Pages\x00name" => "cat"
  "\x00App\Entity\Pages\x00color" => ""
]

Но мне действительно нужен такой результат:

array:3 [▼
  "id" => 3
  "name" => "cat"
  "color" => ""
]

В соответствии с предложениями я внес это изменение:

public function index($slug, Request $request, UserPasswordEncoderInterface $passwordEncoder)
  {
    $page = $this->getDoctrine()->getManager()->getRepository(Pages::class)->findOneBy(['slug'=>$slug]);
    $fields =  get_object_vars($page);
    return $this->render('mypage.html.twig', ['page' => $page, 'fields' => $fields]);
  }

Но это выводит мне пустой массив.

Возможный дубликат Объект сущности доктрины в массив

Maksym Fedorov 26.11.2018 09:22

Возможный дубликат Преобразование объекта PHP в ассоциативный массив

treyBake 26.11.2018 09:43

Передача и вашего объекта, и сериализованного объекта в ваш шаблон Twig кажется немного ненужным. Чтобы предотвратить X / Y Проблема, объясните, зачем вам это нужно.

Stephan Vierkant 26.11.2018 09:46

@StephanVierkant Это потому, что я смог наконец решить эту проблему: stackoverflow.com/questions/53476565/…

peace_love 26.11.2018 09:49

@StephanVierkant Мне не удалось просмотреть свойства объекта в цикле. Но через массив я могу.

peace_love 26.11.2018 09:50
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
5
5 091
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У вас есть два варианта:

1. Используйте Query::HYDRATE_ARRAY вместо findOneBy()

$query = $this->getDoctrine()
    ->getRepository(Pages:class)
    ->createQueryBuilder('p')
    ->getQuery();
$result = $query->getResult(Query::HYDRATE_ARRAY);

(украдено из этот ответ)

2. Используйте сериализатор.

Используйте Компонент сериализатора или JMSSerializerBundle для сериализации вашего объекта сущности.

Работал с сериализатором! $serializer = new Serializer(array(new GetSetMethodNormalizer()), array('json' => new JsonEncoder()));$fields = $serializer->serialize($page, 'json');

peace_love 26.11.2018 09:47

Другие вопросы по теме