* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * @link https://www.temando.com/ */ abstract class NoSequenceDb extends AbstractDb { /** * Entities with no auto-increment ID must toggle "$_useIsObjectNew" property * to distinguish between create and update operations. * @see \Magento\Framework\Model\ResourceModel\Db\AbstractDb::isObjectNotNew * * @var bool */ protected $_useIsObjectNew = true; /** * Entities with no auto-increment ID must toggle "$_isPkAutoIncrement" property * to preserve the ID field. * @see \Magento\Framework\Model\ResourceModel\Db\AbstractDb::saveNewObject * * @var bool */ protected $_isPkAutoIncrement = false; /** * Determine persistence state. Primary key presence/absence * is not an indicator for entities with no auto-increment ID. * * @param AbstractModel $object * @return AbstractDb */ protected function _beforeSave(AbstractModel $object) { $select = $this->_getLoadSelect($object->getIdFieldName(), $object->getId(), $object); $select->limit(1); $entityId = $this->getConnection()->fetchOne($select); $object->isObjectNew(!$entityId); return parent::_beforeSave($object); } }