есть ли способ сопоставить результат сложного запроса sqflite во флаттере - PullRequest
0 голосов
/ 06 мая 2020

Ситуация следующая: у меня есть запрос

SELECT
    n.id_nota, n.titulo, n.contenido, n.fecha_creacion, n.fecha_modificacion,
    gn.id_grupo_nota, gn.titulo AS titulo_gn, gn.descripcion,
    dn.id_documento_nota, dn.id_nota AS id_nota_dn, dn.id_tipo_documento_nota AS    id_tipo_documento_nota_dn, dn.contenido AS contenido_dn ,
    tdn.id_tipo_documento_nota, tdn.nombre
FROM nota n
LEFT JOIN grupo_nota gn ON n.id_grupo_nota = gn.id_grupo_nota
LEFT JOIN documento_nota dn ON n.id_nota = dn.id_nota
LEFT JOIN tipo_documento_nota tdn ON tdn.id_tipo_documento_nota = dn.id_tipo_documento_nota
WHERE
    n.id_usuario = 1
ORDER BY
    n.fecha_modificacion ASC
LIMIT 5

, который возвращает следующую карту

[
    {
        id_nota: 1, 
        titulo: "Game Cube 5x5", 
        contenido: "Lorem ipsum dolor sit amet, consectetur adipiscing elit...", 
        fecha_creacion: 2020-05-04T04:53:36.360993, 
        fecha_modificacion: 2020-05-04T04:53:36.361028, 
        id_documento_nota: 2, 
        id_nota_dn: 1, 
        id_tipo_documento_nota_dn: 1, 
        contenido_dn: "dart.png"
    }, 
    {
        id_nota: 1, 
        titulo: Game Cube 5x5, 
        contenido: Lorem ipsum dolor sit amet, consectetur adipiscing elit..., 
        fecha_creacion: 2020-05-04T04:53:36.360993, 
        fecha_modificacion: 2020-05-04T04:53:36.361028, 
        id_documento_nota: 1, 
        id_nota_dn: 1, 
        id_tipo_documento_nota_dn: 1, 
        contenido_dn: "flutter-icon.png"
    }
]

Это нормально, но я не знаю, как его сопоставить так что он возвращает следующее:

[
    {
        id_nota: 1, 
        titulo: "Game Cube 5x5", 
        contenido: "Lorem ipsum dolor sit amet, consectetur adipiscing elit...", 
        fecha_creacion: 2020-05-04T04:53:36.360993, 
        fecha_modificacion: 2020-05-04T04:53:36.361028, 
        ls_documento_nota: [
            {
                id_documento_nota: 2, 
                id_nota_dn: 1, 
                id_tipo_documento_nota_dn: 1, 
                contenido_dn: "dart.png", 
            },
            {
                id_documento_nota: 1, 
                id_nota_dn: 1, 
                id_tipo_documento_nota_dn: 1, 
                contenido_dn: "flutter-icon.png", 
            }
        ]
    }
]

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

1 Ответ

0 голосов
/ 06 мая 2020

Карта результатов в sqflite не может содержать подколлекцию, поэтому вы всегда будете получать результат строки, как сейчас. Сам SQLite возвращает только список или строки, каждая строка которых содержит список простых значений. Вам либо понадобится другое решение, либо ... просто манипулируйте результатом (чистый дротик), чтобы получить нужный формат, используя какой-нибудь король конвертера карт.

...