Пример #1
0
 /**
  * Utilized for existing models, that were not originally saved with a new custom field.  This will be utilized
  * to ensure cached models properly generate information needed by the existing model. Construct incomplete does
  * not run on new models.  This only needs to run on custom fields that have been created after a model was
  * created, so the model does not have a  value for the linking id in the table.
  * (non-PHPdoc)
  * @see RedBeanModel::constructIncomplete()
  */
 protected function constructIncomplete($bean)
 {
     assert('$bean === null || $bean instanceof RedBean_OODBBean');
     parent::constructIncomplete($bean);
     $metadata = $this->getMetadata();
     foreach ($metadata as $unused => $classMetadata) {
         if (isset($classMetadata['customFields'])) {
             foreach ($classMetadata['customFields'] as $customFieldName => $customFieldDataName) {
                 $customFieldModelClassName = $this->getAttributeModelClassName($customFieldName);
                 $classBean = $this->getClassBean($customFieldModelClassName);
                 $columnName = static::getForeignKeyName($customFieldModelClassName, $customFieldName);
                 if ($classBean->{$columnName} == null) {
                     $customField = $this->unrestrictedGet($customFieldName);
                     $customFieldData = CustomFieldData::getByName($customFieldDataName);
                     $customField->data = $customFieldData;
                 }
             }
         }
     }
 }