Práce se surovými daty
Začněme hned příkladem. Dejme tomu, že máte e-shop a v produktovém katalogu desítky tisíc produktů. A potřebujete mít nějaké servisní skripty. Je jedno zda půjde o přepočet skladových zásob, nebo přeceňování. Hlavní je ten fakt, že v takovém případě je nutné operovat s relativně velkým množstvím dat, respektive velkým počtem záznamů. Je to zkrátka jiná situace, než správa produktů v administraci, nebo jejich prohlížení zákazníkem. A v takové situaci nemusí být úplně vhodné pracovat se desítkami tisíc instancí objektů, ale může být vhodnější použít surová data v podobě polí / asociovaných polí. Samozřejmě se nemusí jednat jen o servisní skripty, ale celou řadu dalších dílčích úloh a řešení problémů. Zkrátka je to jako vždy o tom zvolit správný nástroj a prostředky na správném místě - to je otázka vývojářského citu a schopností. Pojďme si ukázat, jak v Jet pracovat se surovými daty.
Načítání dat
O načítání pojednává samostatná kapitola a metody ::dataFetch*( ) jsou tam popsány. Jen pro pořádek tedy uveďme, že slouží k načtení dat tak jako by jste to dělali pomocí SQL dotazu, ale při tom jsou zachovány výhody ORM - tedy správně vyvinutá aplikace je přenositelná na jiné relační databáze a je možné v aplikaci držet konstantně jeden styl a přístup.
Úprava dat
Dejme tomu, že potřebujeme přepočítat skladové zásoby v našem pomyslném e-shopu a u produktů jednoduše upravit jedno číslo a to dostupný počet kusů. Bylo by rozumné kvůli tomu načítat celé entity produkt a ty pak celé opět ukládat? V tomto konkrétním případě určitě ne. Zde bude stačit zapsat výsledné číslo (nebo výsledná čísla, pokud je více skladů a distribučních míst). Lze to udělat a to naprosto jednoduše:
Product::updateData(
data:[
'stock_qty' => $qty
],
where: [
'id' => $id
]
);
Parametr $data je asociované pole, kde klíč odpovídá názvu vlastnosti, hodnota pak samozřejmě nastavované (ukládané) hodnotě.
Parametr $where je pravidlo pro nastavení dat tvořené stejným principem jako dotazy pro načítání dat.