Devel.cz Lupa Měšec Podnikatel Root Zdroják.cz DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
Doctrine 2: načítání, ukládání a mazání

Marek Šudák
Marek Šudák (neregistrovaný) ---.net.upcbroadband.cz
26. 8. 2010 12:48 Nový

Čistý návrh entity

celé vlákno

„Entita se sama neukládá, někdo ji vezme a někam uloží.“
To je správně. Zároveň ale entita v anotaci obsahuje informaci, k jaké databázové tabulce se váže, což by IMHO neměla – máslo taky neví, jestli patří do ledničky.

Václav Novotný
26. 8. 2010 13:00 Nový

Re: Čistý návrh entity

celé vlákno

A když nepoužijeme anotace, ale zapíšeme mapování do XML? Anotace se jménem tabulky mi přijde jako informace pro toho, kdo chce s máslem něco dělat, ne pro samotné máslo.

Jan Tichý aura:21
26. 8. 2010 13:40 Nový

Re: Čistý návrh entity

celé vlákno

Zároveň ale entita v anotaci obsahuje informaci, k jaké databázové tabulce se váže, což by IMHO neměla – máslo taky neví, jestli patří do ledničky.

Máte pravdu, neměla. Tato informace do entity z čistě návrhového hlediska opravdu vůbec nepatří. V tomto případě ale převažuje čistě praktické hledisko nad akademickou čistotou – takhle nám to umožňuje udržovat všechny definice související s danou entitou přehledně na jednom místě, namísto co bychom místo toho část psali do entity a část do konkrétního mapperu. Ale jinak s námitkou opravdu souhlasím, také mě to dráždí.

Tharos
Tharos (neregistrovaný) ---.88.broadband11.iol.cz
3. 9. 2010 1:30 Nový

Re: Čistý návrh entity

celé vlákno

Máslo samo to sice neví, ale má to na sobě napsané, v případě mého exempláře doma: „Skladujte při teplotě od 4°C do 8°C“ :). Takže i máslo má v podstatě anotaci :).

Vít Šesták (v6ak) aura:72
5. 9. 2010 18:12 Nový

Re: Čistý návrh entity

celé vlákno

Ale už třeba neví, jestli patří do mé ledničky, nebo do ledničky souseda :)

pavel
pavel (neregistrovaný) ---.net.upcbroadband.cz
26. 8. 2010 13:25 Nový

Re: Doctrine 2: načítání, ukládání a mazání

celé vlákno

[cite]Jinými slovy pokud uvnitř jakékoliv entity potřebujete sáhnout na Entity Manager, děláte něco špatně.[/cite]
jak potom docílím něčeho jako:
$articleEntiti­es=$categoryEn­tity->getArticleEn­tities();
?
Musím pokaždé někde explicitně volat Entity Manager a vyžádat si $articleEntities pro tuhle $categoryEntity?
Omlouvám se, pokud jsem tohle přehlédl v předchozích článcích. Ale ani teď to tam nevidím.

Jan Tichý aura:21
26. 8. 2010 13:44 Nový

Re: Doctrine 2: načítání, ukládání a mazání

celé vlákno

Všechno tohle řeší Doctrine 2 pomocí asociací, kde načtení všech článků z dané kategorie zajistí sama, aniž bych musel explicitně volat nějaké findBy() v entitě kategorie.

K asociacím se dostanu v přespříštím díle. Seriál musí mít pochopitelně nějaký postupný vývoj a nešlo zatím tak úplně psát o asociacích, pokud jsem se dosud nezmínil třeba o Entity Manageru. Takže trpělivost, na všechno dojde.

Pavel
Pavel (neregistrovaný) ---.net.upcbroadband.cz
26. 8. 2010 13:48 Nový

Re: Doctrine 2: načítání, ukládání a mazání

celé vlákno

Díky za odpověď i seriál. Dost mi rozšiřuje obzory.

Tharos
Tharos (neregistrovaný) ---.vimperk.elsat.cz
26. 8. 2010 16:32 Nový

Díky za seriál

celé vlákno

Děkuji autorovi za moc příjemné počtení, Doctrine 2 (oproti první verzi) se pro mě též začíná stávat velmi inspirativní. Tak už aby byla na světě stabilní verze :).

Vojtěch Vondra aura:45
26. 8. 2010 21:44 Nový

Dodatek k poslednímu odstavci

celé vlákno

K poslednímu odstavci by bylo vhodné přidat hlavně důvod – a to výkon.
Doctrine vygeneruje potřebné dotazy k provedení flush() tak, abych jich bylo co nejméně. Např. rozšířené INSERTy, DELETE z jedné tabulky v jednom dotazu, etc.

Václav Novotný
27. 8. 2010 9:11 Nový

Re: Dodatek k poslednímu odstavci

celé vlákno

Tak on není důvodem jenom výkon (i když je velice důležitý). Stejně tak je třeba zajistit, aby se dotazy provedly ve správném pořadí či abychom nemuseli mít dlouho otevřené transakce.

Vít Šesták (v6ak) aura:72
5. 9. 2010 18:22 Nový

Jedna instance na entitu

celé vlákno

Pokud se Doctrine stará, aby měl jednu instanci na entitu, pak si vše drží až do ukončení? Jinak si to představit dost dobře nedovedu, v PHP neznám WeakReference apod.

Václav Novotný
5. 9. 2010 18:43 Nový

Re: Jedna instance na entitu

celé vlákno

Ano, všechny načtené instance entit jsou v Entity manageru po celou dobu běhu skriptu. Osobně v tom nevidím žádný problém.

Vít Šesták (v6ak) aura:72
5. 9. 2010 18:49 Nový

Re: Jedna instance na entitu

celé vlákno

V případě typického webového použití to problém obvykle opravdu není. Ale třeba u dávkového skriptu to problém být může.

Václav Novotný
5. 9. 2010 19:26 Nový

Re: Jedna instance na entitu

celé vlákno

Ano, to pak opravdu může být problém. Pokud bys chtěl mermomocí Doctrinu používat, tak pak můžeš clearovat entity manager a unsetovat nepotřebné instance. Nicméně z vlastní zkušenosti mohu doporučit v takovýhle případech se na Doctrine vykašlat a používat čisté SQL (třeba přes Doctrine DBAL). Za tu ztrátu výkonu práce s entitami IMHO ani trochu nestojí.

tomp
tomp (neregistrovaný) ---.35.broadband7.iol.cz
22. 10. 2010 13:48 Nový

Random() v Doctrine 2

celé vlákno

Existuje v Doctrine 2 nějaká obdoba funkce RANDOM() z Doctrine 1?

Z Doctrine teprve začínám a narazil na problém náhodného výběru kolekce objektů. Zatím jsem nenašel elegantní způsob jak toho docílit. Zjistil jsem, že v Doctrine 1 existovala funkce RANDOM, která ale v Doctrine 2 nelze využít.

Daniel Mikeš aura:45
28. 12. 2010 23:04 Nový

Hledání podle nullové hodnoty

celé vlákno

Super články!
Měl bych ale jeden dotaz - Jde pomocí entityManageru a metody findBy hledat sloupečky, které mají hodnotu NULL?

Díky;)

Zasílat nově přidané příspěvky e-mailem