self::TABLE, 'primary' => self::ID_EXTRACHARGE, 'fields' => array( self::ID_EXTRACHARGE => array('type' => self::TYPE_INT), self::ID_ORDER => array('type' => self::TYPE_INT, 'required' => true), self::EXTRA_CHARGE_AMOUNT => array('type' => self::TYPE_INT, 'required' => true), ), ); /** * Returns first entry matching for order id. * * PretaShopCollection does not apply limit to db query on its own * (when using getFirst). It selects ALL entries from DB and then returns first of them. * That is why line: * ->setPageSize(1) * had to be added. * * @param int $orderId * * @return Przelewy24ExtraCharge */ public static function findOneByOrderId($orderId) { $queryBuilder = new PrestaShopCollection(self::class); return $queryBuilder ->where('id_order', '=', $orderId) ->setPageSize(1) ->getFirst(); } /** * Gets or creates extra charge object by its order id. * @param int $orderId * * @return Przelewy24ExtraCharge */ public static function prepareByOrderId($orderId) { $extracharge = self::findOneByOrderId($orderId); if (!($extracharge instanceof ObjectModel)) { $extracharge = new Przelewy24ExtraCharge(); } $extracharge->id_order = $orderId; return $extracharge; } }