/** * Process role before saving * * @param \Magento\Framework\Model\AbstractModel $role * @return $this */ protected function _beforeSave(\Magento\Framework\Model\AbstractModel $role) { if (!$role->getId()) { $role->setCreated($this->dateTime->formatDate(true)); } $role->setModified($this->dateTime->formatDate(true)); if ($role->getId() == '') { if ($role->getIdFieldName()) { $role->unsetData($role->getIdFieldName()); } else { $role->unsetData('id'); } } if (!$role->getTreeLevel()) { if ($role->getPid() > 0) { $select = $this->getConnection()->select()->from($this->getMainTable(), ['tree_level'])->where("{$this->getIdFieldName()} = :pid"); $binds = ['pid' => (int) $role->getPid()]; $treeLevel = $this->getConnection()->fetchOne($select, $binds); } else { $treeLevel = 0; } $role->setTreeLevel($treeLevel + 1); } if ($role->getName()) { $role->setRoleName($role->getName()); } return $this; }
/** * Prepare the list of entity fields that should be selected from DB. Apply filtration based on active fieldset. * * @param \Magento\Framework\Model\AbstractModel $object * @param string $tableName * @return array|string */ protected function _getColumnsForEntityLoad(\Magento\Framework\Model\AbstractModel $object, $tableName) { $fieldsetColumns = $object->getFieldset(); if (!empty($fieldsetColumns)) { $connection = $this->getConnection(); if ($connection instanceof \Magento\Framework\DB\Adapter\AdapterInterface) { $entityTableColumns = $connection->describeTable($tableName); $columns = array_intersect($fieldsetColumns, array_keys($entityTableColumns)); } } if (empty($columns)) { /** In case when fieldset was specified but no columns were matched with it, ID column is returned. */ $columns = empty($fieldsetColumns) ? '*' : [$object->getIdFieldName()]; } return $columns; }
public function testSetGetIdFieldName() { $name = 'entity_id_custom'; $this->model->setIdFieldName($name); $this->assertEquals($name, $this->model->getIdFieldName()); }