schema = new Magento1Schema($connection); } /** * @return Collection> */ public function fetchOrders(int $afterEntityId, int $limit): Collection { $columns = $this->schema->existingColumns('sales_flat_order', self::ORDER_COLUMNS); if ($columns === [] || ! in_array('entity_id', $columns, true)) { return collect(); } $rows = DB::connection($this->connection) ->table('sales_flat_order') ->where('entity_id', '>', $afterEntityId) ->orderBy('entity_id') ->limit($limit) ->get($columns); return $rows->map(fn ($row) => $this->toArray($row, 'entity_id'))->values(); } /** * @param array $orderEntityIds * @return Collection> */ public function fetchItems(array $orderEntityIds): Collection { if ($orderEntityIds === []) { return collect(); } $columns = $this->schema->existingColumns('sales_flat_order_item', self::ITEM_COLUMNS); if ($columns === [] || ! in_array('order_id', $columns, true)) { return collect(); } $rows = DB::connection($this->connection) ->table('sales_flat_order_item') ->whereIn('order_id', $orderEntityIds) ->orderBy('item_id') ->get($columns); return $rows->map(function ($row) { $item = $this->toArray($row, 'item_id'); $item['order_id'] = (int) ($row->order_id ?? 0); $item['parent_item_id'] = isset($row->parent_item_id) && $row->parent_item_id !== null && $row->parent_item_id !== '' ? (int) $row->parent_item_id : null; return $item; })->values(); } /** * @param array $orderEntityIds * @return Collection> */ public function fetchAddresses(array $orderEntityIds): Collection { if ($orderEntityIds === []) { return collect(); } $columns = $this->schema->existingColumns('sales_flat_order_address', self::ADDRESS_COLUMNS); if ($columns === [] || ! in_array('parent_id', $columns, true)) { return collect(); } $rows = DB::connection($this->connection) ->table('sales_flat_order_address') ->whereIn('parent_id', $orderEntityIds) ->orderBy('entity_id') ->get($columns); return $rows->map(function ($row) { $address = $this->toArray($row, 'entity_id'); $address['parent_id'] = (int) ($row->parent_id ?? 0); return $address; })->values(); } /** * @param array $orderEntityIds * @return Collection> */ public function fetchPayments(array $orderEntityIds): Collection { if ($orderEntityIds === []) { return collect(); } $columns = $this->schema->existingColumns('sales_flat_order_payment', self::PAYMENT_COLUMNS); if ($columns === [] || ! in_array('parent_id', $columns, true)) { return collect(); } $rows = DB::connection($this->connection) ->table('sales_flat_order_payment') ->whereIn('parent_id', $orderEntityIds) ->orderBy('entity_id') ->get($columns); return $rows->map(function ($row) { $payment = $this->toArray($row, 'entity_id'); $payment['parent_id'] = (int) ($row->parent_id ?? 0); return $payment; })->values(); } /** * @return array */ private function toArray(object $row, string $idColumn): array { $data = (array) $row; $data[$idColumn] = (int) ($row->{$idColumn} ?? 0); return $data; } }