Jarves\Admin\FieldTypes\TypeObject::bootRunTime PHP Метод

bootRunTime() публичный Метод

public bootRunTime ( Object $object, Configs $configs )
$object Jarves\Configuration\Object
$configs Jarves\Configuration\Configs
    public function bootRunTime(Object $object, Configs $configs)
    {
        $field = $this->getFieldDefinition();
        //check for n-to-n relation and create crossTable
        if (AbstractStorage::MANY_TO_MANY == $field->getObjectRelation()) {
            if ($this->defineCrossObject($object, $configs)) {
                $configs->addReboot(sprintf('Added crossObject for field %s', $field->getId()));
            }
        }
        //        //check for n-to-1 and one-to-one objectRelations and create cross object with relations
        //        if (ORMAbstract::MANY_TO_ONE == $field->getObjectRelation() ||
        //            ORMAbstract::ONE_TO_ONE == $field->getObjectRelation()
        //        ) {
        if ($this->defineRelation($object, $configs)) {
            $configs->addReboot(sprintf('Defined relation %s from %s -> %s', $field->getObjectRelation(), $object->getKey() . '.' . $field->getId(), $field->getObject()));
        }
        //        }
        //create virtual reference-field for many-to-one relations
        if ($this->getFieldDefinition()->getObjectRelation() == AbstractStorage::MANY_TO_ONE) {
            if ($object = $configs->getObject($field->getObject())) {
                if (!($refName = $field->getObjectRefRelationName())) {
                    $refName = $field->getObjectDefinition()->getId();
                }
                $refName = lcfirst($refName);
                $virtualField = $object->getField($refName);
                if (!$virtualField) {
                    $virtualField = new Field(null, $object->getJarves());
                    $virtualField->setVirtual(true);
                    $virtualField->setId($refName);
                    $virtualField->setType('object');
                    $virtualField->setLabel('Auto Object Relation (' . $field->getObject() . ')');
                    $virtualField->setObject($field->getObjectDefinition()->getKey());
                    $virtualField->setObjectRelation(AbstractStorage::ONE_TO_MANY);
                    $object->addField($virtualField);
                    $configs->addReboot(sprintf('Added virtualField for field %s', $field->getId()));
                }
            }
        }
    }