Nette/Database – fetchAssoc() nebo něco lepšího?

- David Klouček
 - Člen | 57
 
Zajímám se o způsob, jak naformátovat data získaný z databáze pomocí Nette\Database (ne Table) nebo Dibi. V obojim je fetchAssoc(), ale s ní se mi nepovedlo udělat nějakej pokročilejší výpis přesně, jak bych chtěl.
Třeba když chci vypsat články a ke každýmu info o autorovi+seznam komentářů, položím dotaz:
SELECT a.id AS aid, c.id AS cid, c.*, u.*, a.*, (a.id/2) AS neco
FROM `article` AS `a`
LEFT JOIN `comment` AS `c` ON a.id=c.article_id
LEFT JOIN `user` AS `u` ON a.user_id=u.id
ORDER BY `a`.`title`
Napadlo mě, co kdyby existovala nějaká metoda, kde bych popsal strukturu dat stylem:
[
    'a.id' => [
        'a.*',
        'neco',
        '#user' => 'u.*',
        '#comments' => ['c.id' => 'c.*']
    ]
]
A dostal bych:
[
    1 => [
        'id' => 1,
        'title' => 'Článek 1',
        'neco' => 0.5,
        'user' => ['id' => 1, 'nick' => 'David'],
        'comments' => [
            1 => ['id' => 1, 'comment_text' => 'abc'],
            2 => ['id' => 2, 'comment_text' => 'abc']
        ]
    ],
    //2 => ..
]
Dala by se tím teda sestavit struktura jako generuje ORM. Co si o tom myslíte?

- David Klouček
 - Člen | 57
 
newPOPE napsal(a):
Predpokladam, ze to Nette\DB alebo Dibi to nemas sancu pretlacit nakolko je tu stale moznost 1. a tu si kazdy urobi podla poziadaviek.
Podle mě by bylo dobrý vymyslet něco jako fetchAssoc(), kam ale půjde napasovat jakejkoliv formát. Spíš se divim, že nikomu to nechybí, kromě třeba https://forum.nette.org/…c-vice-joinu. Já na to narážim dost často.
Editoval David Klouček (23. 1. 2017 21:23)