Add id keys into obatained collection properties
Collection properties obtained from entity now using keys based on collection item's primary key.
Ahoj, díky za PR, napadají mě k tomu ale 2 zádrhely:
-
$entity->get($primaryKey)může místo skalární hodnoty vrátit objekt, tudíž$value[$entity->get($primaryKey)]spadne na špatném typu indexu -
$mapper->getPrimaryKey()vrací název sloupečku v DB, to ale nemusí odpovídat názvu property v entitě
Popravdě mě nenapadá jak to řešit líp, aby to bylo dostatečně univerzální :-/
Ahoj, promiň že píši takhle s velkým odstupem.
$entity->get($primaryKey) může místo skalární hodnoty vrátit objekt, tudíž $value[$entity->get($primaryKey)] spadne na špatném typu indexu
Myslíš, že zkontrolovat jestli je proměnná scalar případně ji potom použít pro klíč není vhodné? V případě, že je prim. klíč objekt bych pak i očekával chování, že se id klíče v kolekcích nepoužijí.
$mapper->getPrimaryKey() vrací název sloupečku v DB, to ale nemusí odpovídat názvu property v entitě
Tady bychom potom mohli použít následující. Co myslíš?
$primaryKey = $this->mapper->getEntityField($targetTable, $this->mapper->getPrimaryKey($targetTable));
Ahoj,
možná bych to celé upravil do jiné podoby - koukal jsem jak to entita řeší teď (třeba při úpravě M:N vazeb) a řešením by bylo vytáhnout tu hodnotu primárního klíče z Row - takže např. $value[$entity->row->{$primaryKey}] = $entity;.
V Row jsou data DB řádku, takže není potřeba volat getEntityField, stačí pouze getPrimaryKey, a zároveň by tam měla být čistá skalární hodnota (alespoň pro primární klíč).
Ještě si říkám, jestli je tohle vůbec potřeba, co tahle úprava konkrétně řeší za potřebu?