public function find($id) { $resultSet = $this->tableGateway->select(['id' => (int) $id]); if ($resultSet->count() == 1) { $hydrator = new ClassMethods(); $hydrator->addStrategy('items', new OrderItemHydratorStrategy(new ClassMethods())); $order = $resultSet->current(); $client = $this->clientTableGateway->select(['id' => $order->getClientId()])->current(); $sql = $this->orderItemTableGateway->getSql(); $select = $sql->select(); $select->join('products', 'order_items.product_id = products.id', ['product_name' => 'name'])->where(['order_id' => $order->getId()]); $items = $this->orderItemTableGateway->selectWith($select); $order->setClient($client); foreach ($items as $item) { $order->addItem($item); } $data = $hydrator->extract($order); return $data; } return false; }
public function find($id, UsersEntity $user = null) { $hydrator = new ClassMethods(); $hydrator->addStrategy('items', new OrderItemHydratorStrategy($hydrator)); $where = new Where(); $where->equalTo('id', $id); if ($user) { $where->equalTo('user_id', $user->getId()); } $order = $this->tableGateway->select($where)->current(); if (!$order) { return null; } $client = $this->clientTableGateway->select(['id' => $order->getClientId()])->current(); $order->setClient($client); $sql = $this->tableGatewayItems->getSql(); $select = $sql->select(); $select->join('products', 'order_items.product_id = products.id', ['product_name' => 'name'])->where(['order_id' => $order->getId()]); $items = $this->tableGatewayItems->selectWith($select); foreach ($items as $item) { $order->addItem($item); } return $hydrator->extract($order); }