Как упорядочить по подполю DC2Type: json_array - PullRequest
0 голосов
/ 14 июля 2020

Я работаю в существующем приложении, и меня просят упорядочить по дочернему полю поля DC2Type: json_array в Symfony. Обычно я добавляю поле как столбец в таблице. В данном случае это невозможно.

У нас есть сущность JsonSerializable invoice с обычным атрибутом date. Но также атрибут data, содержащий due_date. Я хочу заказать по data[due_date] в запросе Symfony. Возможно ли это вообще?

1 Ответ

1 голос
/ 14 июля 2020

tl; dr: Нет, не совсем.

Согласно матрице сопоставления типов Doctrine , json_array отображается на столбец MySQL s MEDIUMTEXT type, который по умолчанию, очевидно, не индексирует свое содержимое как json, следовательно, практически не дает преимущества в производительности. (также AFAICT, doctrine не предоставляет никаких функций json, кроме преобразования db json из и в php массивы / нули)

Может быть, вы могли бы волшебным образом выполнить поиск по строке magi c для извлечения значения для сортировки по нему, но вы все равно не получите повышения производительности, которое обеспечивает правильный индекс. В зависимости от ваших данных это может стать заметно медленным (и потреблять память).

Тип данных JSON является довольно «новым» для мира реляционных баз данных, и сопоставители, такие как doctrine, еще не полностью его приняли. . Расширение doctrine для обработки этого типа данных, вероятно, потребует много работы. Вместо этого вы можете переосмыслить схему своей таблицы, включив в нее все поля как столбцы , которые вы хотите упорядочить, чтобы использовать все преимущества реляционной базы данных (например, индексирование).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...