Tharos / LeanMapper

Lean Mapper is a tiny ORM based on powerful Dibi database abstraction library for PHP.
MIT License
87 stars 35 forks source link

PostgreSQL vyhazuje chybu při $entity->removeFromX($atr); #59

Closed janfolwarczny closed 7 years ago

janfolwarczny commented 10 years ago

Při zavolání metody removeFromX() na entitě vygeneruje Lean Mapper u M:N vazeb tento dotaz:

DELETE 
FROM "prvni_druha" 
WHERE "prvni_id" = 101 AND "druha_id" = 2 
LIMIT 1

Postgre ale nevezme ten LIMIT a vyhodí chybu syntax error at or near "LIMIT". Bez limitu stejný dotaz provede.

Tharos commented 10 years ago

Hmm, koukám, že PostgreSQL nepodporuje v DELETE dotazech LIMIT klauzuli.

Rychlý fix je přetížit si v nějakém vlastním abstraktním repositáři metodu persistHasManyChanges. Lze plně vyjít z výchozí implementace, jen upravit tu část s DELETE. Ty v ní víš vše potřebné (oba FK klíče i počet záznamů, které se mají odstranit), jde jen o sestavení toho dotazu.

No a já taky najdu nějaké hezké univerzální provedení toho dotazu a to bych dal přímo do knihovny.

Tharos commented 10 years ago

Hezky by to mělo jít vyřešit takhle.

janfolwarczny commented 10 years ago

Díky, poděděním repositáře jsem to právě pořešil. Pokud se to vyřeší přímo v Lean Mapperu, tak to bude paráda. :)

pmachan commented 9 years ago

Tak sem na to dnes také narazil :) Prozatím sem to změnil přepsáním persistHasManyChanges a to odstraněním limitu.

fredomgc commented 9 years ago

Taky jsem na to narazil, taky vyřešeno přepsáním persistHasManyChanges.