Autor Zpráva
T-fon
Profil
Ahoj, zajímalo by mě jak se řeší výpis dat např. produktů, pokud máme některé informace uložené v databázi a některé taháme z API třetí strany. Tzn. v modelu si vytáhnu všechny produkty a normálně bych si je předal do proměnné a v šabloně je vypsal cyklem. Ale potřebuji jednu informaci o produktu získat odjinud. Napadá mě že výpis z DB by by měl být ve formě asociativního pole, které bych projel cyklem už v modelu a v tom bych ke každýmu produktu přiřadil novou informaci a vytvořil nové pole i s touto novou informací. Není nějaký jiný způsob jak toto řešit? Nějak ani nevím, co přesně bych měl googlit :)
Keeehi
Profil
T-fon:
Tak můžeš to dělat až při tom výpisu. Ten produkt (předpokládám že jde o objekt) může mít metodu getAllAttributes() která bude vracet pole všech informací, část si vytáhne (nebo už má) z databáze a část z API.
Těžko se to ale takto obecně říká. Pokud to API umí předat informace o více produktech, bylo by dobré se ptát rovnou na více produktů, aby se ušetřili dotazy. Což je ale mnohem složitější vytvořit s odloženým načítáním. Taky je potřeba zvážit, co se má stát, když API nebude dostupné. Pokud budeš mít timeout třeba i jen na 1 vteřinu a API spadne, pak vypsání třiceti produktů se zadrhne na půl minuty. Nebylo by lepší si ty hodnoty z API vyčítat nezávisle a ukládat do databáze?
T-fon
Profil
API neumí předat informace o více produktech, pouze o každým zvlášť. Objekty produktů se momentálně nevytvářejí, jde opravdu jen o jednoduchý výpis produktů z databáze.
Jde taky o to, že hodnoty se stále mění. Takže OK, ukládat do databáze by byla možnost a pak by i výpis byl nejjednodušší. Zatím ale nevím, jak často by se do DB musely ukládat, ale bude to asi dost často. Zatím jsem ve fázi, kdy zjišťuju co a jak, takže o nedostupnosti API jsem ještě nepřemýšlel, díky za tip.
T-fon
Profil
Teď jsem koukal na konkurenci a data nemaj úplně aktuální, takže logicky to určitě dělaj tak, že v nějakém rozumném intervalu prostě uložej data do databáze a tahaj to z ní.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: