-
-
- function read2(RowGateway $row) {
- #echo __METHOD__." ".$this;
- $map = $this->getRefMap();
- $rel = $this->container->getGateway()->getRelation(
- $map->getGateway()->getName(), $this->refName);
- $key = array_combine($rel->referencedColumns, array_map(function($c) use($row) {
- return $row->$c->get();
- }, $rel->foreignColumns));
- if (($obj = $this->mapper->objectOfRowId($this->refClass, $key))) {
- yield $this->property => $obj;
- } else foreach ($map->getGateway()->by($row, $this->refName) as $row) {
- yield $this->property => $this->mapper->objectOf($this->refClass, $row);
- }
- }
-
- function write2($object) {
- #echo __METHOD__." ".$this;
- $map = $this->getRefMap();
- $rel = $this->container->getGateway()->getRelation(
- $map->getGateway()->getName(), $this->refName);
- $ref = $this->extract($object);
- foreach ($rel as $fgn => $col) {
- $fld = $map->getFieldMapping($col);
- yield $fgn => $fld->extract($ref);
- }
- }