так что вы говорите ... вы хотите активно игнорировать объектно-реляционное отображение (ORM), которое предоставляет вам доктрина ORM, которую вы используете, и которая фактически предоставляет ключи именно так, как ваша сущность называет их?
Полагаю, для этого есть веская (или не очень) причина.В зависимости от вашего варианта использования, лучшие решения могут быть лучшими.Опции, включая (но, вероятно, очень неполные):
опция 1: добавить функцию к сущности
class Grid {
/** all your fields **/
public function toArray() {
return [
'grid_id' => $this->gridId,
// ...
];
}
}
опция 2: не использовать orm
добавитьФункция в вашем GridRepository
, как:
function getRawAll() {
$conn = $this->getEntityManager()->getConnection();
$_result = $conn->query('SELECT * FROM grid');
$results = [];
while($row = $_result->fetch()) {
$results[] = $row;
}
return $results;
}
и аналогичные.Те, очевидно, обходят ORM.ORM предназначен для извлечения объектов, которые имеют указанные поля.
вариант 3: вернуть данный массив обратно в не отображенное состояние
, используя EntityManager
getClassMetadata
(ClassMetadataInfo
-> fieldMapping), чтобы получить сопоставление для ваших полей и «отменить» переименование.
Это, вероятно, немного лучше, чемвариант 1 до некоторого градуса, поскольку его не нужно обновлять.
вариант 4: используйте сериализатор, который выполняет перевод имени вашего свойства.
, поскольку вы 'очевидно, что уже используется сериализатор jms , аннотация SerializedName, вероятно, может помочь, хотя по умолчанию используется случай змеи, но, может быть, где-то он переопределен?Вы можете проверить свою конфигурацию ...