Doctrine általában és egy PHP bug

From: Ferenczi K.
Sent on: Wednesday, March 6, 2013 12:10 AM
Sziasztok!

Nem tudom, hogy ki és hogyan van vele, de a Doctrine 2-vel folyamatos szívás van, egyszerűen agyrém. Le nem dokumentált funkciók, nem várt működések, vagy éppen ledokumentált funkciók, félig megírva. Most az egyik fixtures generálásnál futottam bele abba a hibába, hogy 100 entity generálása közben 1-5 db-ot teljesen véletlen szerűen kihagyott! Létrejött az objektum, de az adatbázisba nem került bele, és a prePersist sem hívódott meg hozzájuk. De tényleg, teljesen összefüggéstelen volt, hogy mikor nem írja bele az adatbázisba. Egy közel 7 órás debugolás után derült ki, hogy a php spl_object_hash() fv-e, az ígért funkciójával ellentétben, egyáltalán nem generál egyedi hash-eket! Sajnos ütközés lépett fel, és két különböző objektumnak ugyanazt a hash-t sikerült generálnia, a doctrine pedig ez alapján "jegyzi meg", hogy mely objektumokat mentette már, ha pedig mentette, akkor nyilván nem menti megint. És mivel azt hitte, hogy egy korábban már mentett objektumot kapott megint, ezért elegánsan figyelmen kívül hagyta, hogy azzal bármit is kezdenie kellene.

Úgyhogy ha "nagy mennyiségű" random adatot akartok beírni, egyszerre, akkor érdemes számolni vele, hogy néha vagy működik vagy nem.

Ja, és a saját oszlop típusokkal érdemes vigyázni, mert ELMÉLETILEG, a dokumentumban benne van, hogy ilyet lehet létrehozni, és simán lehet konvertálgatni a mysql-nek oda-vissza az adatokat - convertToPHPValue() és convertToDatabaseValue() fv -, ez a funkció a valóságban csak félig van megírva, ha DQL-ben vagy QueryBuilderben akarod használni az adott oszlopot, egyszerűen nem hívja meg a konvertálót. Elegánsan kihagyták innen ezt a részt, mint akinek soha nincs is szüksége ilyesmire, én meg megint fogtam a fejem, hogy find()-dal működik, querybuilder-ben pedig nem, amikor minden meg van írva és jól van megírva. Aztán végig követve a doctrine forrását, kiderült, ezért.

Más.

Nekem a csütörtökök, azok néha nem jók, mert más programom van. Csak a csütörtök. Ezeket általában jó előre tudom: 03.07, 03.21, 04.04, 04.18, 05.02, 05.16, 05.30, 06.13. Tehát pontosan 2 hetenként követik egymást. Kérhetném, hogy a következő alkalom majd egy számomra is szabad időpontban legyen? :) Már persze ha másnak éppen nem az üti a teendőit.

Chris

People in this
Meetup are also in:

Sign up

Meetup members, Log in

By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy