예제 #1
0
 /**
  * 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;
 }
예제 #2
0
 /**
  * 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;
 }
예제 #3
0
 public function testSetGetIdFieldName()
 {
     $name = 'entity_id_custom';
     $this->model->setIdFieldName($name);
     $this->assertEquals($name, $this->model->getIdFieldName());
 }