register('venta_id', (new Implement\Repository\Mapper()) ->setProperty('venta') ->setFunction(function($data) { return $this->ventaRepository->fetchById($data['venta_id']); })); return $this->parseData(new Model\Venta\MediosPago\Toku\Subscription(), $data, $map); } public function save(Define\Model $model): Model\Venta\MediosPago\Toku\Subscription { $model->id = $this->saveNew( ['venta_id', 'toku_id', 'created_at'], [$model->venta->id, $model->toku_id, (new DateTimeImmutable())->format('Y-m-d H:i:s')] ); return $model; } public function edit(Define\Model $model, array $new_data): Model\Venta\MediosPago\Toku\Subscription { return $this->update($model, ['venta_id', 'toku_id', 'updated_at'], array_merge($new_data, ['updated_at' => (new DateTimeImmutable())->format('Y-m-d H:i:s')])); } /** * @param int $venta_id * @return Model\Venta\MediosPago\Toku\Subscription * @throws Implement\Exception\EmptyResult */ public function fetchByVenta(int $venta_id): Model\Venta\MediosPago\Toku\Subscription { $query = $this->connection->getQueryBuilder() ->select() ->from($this->getTable()) ->where('venta_id = :venta_id'); return $this->fetchOne($query, compact('venta_id')); } /** * @param string $toku_id * @return Model\Venta\MediosPago\Toku\Subscription * @throws Implement\Exception\EmptyResult */ public function fetchByTokuId(string $toku_id): Model\Venta\MediosPago\Toku\Subscription { $query = $this->connection->getQueryBuilder() ->select() ->from($this->getTable()) ->where('toku_id = :toku_id'); return $this->fetchOne($query, compact('toku_id')); } /** * @param array $ventas_ids * @return array * @throws Implement\Exception\EmptyResult */ public function fetchByVentas(array $ventas_ids): array { $idsQuery = implode(', ', array_fill(0, count($ventas_ids), '?')); $query = $this->connection->getQueryBuilder() ->select() ->from($this->getTable()) ->where("venta_id IN ({$idsQuery})"); return $this->fetchMany($query, $ventas_ids); } }