stable Nette 2.0 a NotORM
- Oggy
- Člen | 306
Trošku se trápím s nahrazením nette/database za notorom v nette 2.0
..
Koukal jsem po fóru, kuchařce apod.. ale nějka více ucelenou informaci
k nejnovější revizi jsem nenašel.
Jak má vypadat config.. jak nejlépe přidat panel, přidat vlastní NotORM_Row implementaci.. zapnout cache apod.
- Tomáš Votruba
- Moderator | 1114
Tak místo flákání jsem zkusil sepsat něco do Kuchařky s NotORM a Nette 2.0 – rád bych zde pracoval na jeho zlepšení. Máš-li tedy nějaké návrhy, sem s nimi.
Použití NotORM_Row by mne také zajímalo.
(Edit: typo)
Editoval Schmutzka (27. 2. 2012 2:00)
- Tharos
- Člen | 1030
@hrach: No vidíš, a jsou lidi, kteří ještě teď
přecházejí
z Nette\Database
na NotORM… Čert se v tom vyznej. :) Ale třeba
jenom z hlediska API prostě někomu NotORM může vyhovovat více.
Třeba mně osobně… Z ukecanějšího zápisu Nette\Database
pro mě neplynou žádné výhody. Čitelnost obou API (ve smyslu snadného
pochopení obsažných myšlenek) je IMHO naprosto zoufalá (zkrátka jako
u rozsáhlejších SQL dotazů, s tím prostě nikdo nic nenadělá) a pak už
tedy radši volím tu super úsporu znaků typu
$notorm->user[array('username' => $username)]
. :)
Editoval Tharos (23. 2. 2012 10:42)
- Oggy
- Člen | 306
Já si na NotORM zápis zvykl, umí toho zatím ještě více viz http://sql-cross-queries.freexit.eu/notorm/nettedb/
- Tharos
- Člen | 1030
(Nebyl to dotaz na mě, ale…) Já ho připojuji trochu jinak, mám pro
NotORM napsanou Config\Extensions\NotORMExtension
. Přijde mi to
jako nejpraktičtější (a nejlépe znovupoužitelné) řešení. To, co je
teď v kuchařce
se mi z několika důvodů vysloveně nelíbí. No a to, co je tady nahoře, mi
přijde trochu zmatené. Proč vůbec cpát NotORM do „jmenného prostoru“
Nette extenze… No, jsem já to ale kritik. :)
Až bude čas, možná bych tu svou extenzi mohl někam umístit…
- Tomáš Votruba
- Moderator | 1114
hrach napsal(a):
Už jsem zvyklý, že ti to hrozně trvá a nakonec to musím udělat sám :D.
To vidím jako silnou výhodu u NotORM, jakmile ho člověk jednou pochopí, může si ho upravit k obrazu svému a všemožně vylepšovat. NDB z Nette jen tak vyjmout nejde, resp. pro neustálý vývoj a debugování, by to bylo hrozně na nervy. Stejně jako Nette umožňuje nadstavbu nad sebou a díky tomu je tak kvělé.
Navíc Kuba je programátorská elita, takže je radost jeho výtvory používat.
- duke
- Člen | 650
@hrach Co je to git log vím, ale těšil jsem se na slibovaný
diktát z fleku. Místo toho jsem byl z fleku odkázán na git. :-)
Je mi jasné, že seznam tvých commitů také leccos napoví, ale nejspíš
není vše jen o chybách v NotORM. Nebo u každého commitu, kde jde
o chybu již v NotORM, to upřesňuješ v popisu?
- duke
- Člen | 650
Díky.
Také jsem si všiml, žes něco opravoval s columns cache. Před časem mi NotORM columns cache v některých případech nefungovala podle představ a na mé otázky na NotORM fóru nikdo nereagoval. Jde o to, že se v některých případech cache špatně updatuje (ve smyslu přepisuje místo doplňuje), což vede k většímu počtu dotazů (fallbacky na SELECT *). Toto je také v Nette\Database opraveno?
- duke
- Člen | 650
Tomu rozumím a nijak jsem to nezpochybňoval. Jde o to, že v NotORM je implementace tohoto zabugovaná. Právě jsem otestoval chování v Nette\Database a zdá se, že ta je v tomto ohledu v pořádku.
Konkrétně jde o tento kód:
NotORM se narozdíl od Nette\Database nikdy nezadaptuje a bude neustále opakovat 3 následující dotazy:
SELECT id, slogan FROM application WHERE (id = 1)
SELECT * FROM application WHERE (id = 1)
SELECT id, slogan FROM application WHERE (id = 2)
Pak jsem ještě otestoval related na tabulce application_tag, a tam mi to v NotORM funguje dobře, ale v Nette\Database jen při prvním spuštění (dokud není vytvořená cache). Zřejmě se Nette\Database narozdíl od NotORM neumí vyrovnat s tím, že tabulka application_tag má dvou-sloupcový primární klíč. Takže alespoň v tomto zatím NotORM vede. :-)
Pozn.: Testoval jsem to na MySQL.