src/relatedProperties/models/RelatedPropertiesModel.php
public function hasAttribute($name)
    {
        if (in_array($name, $this->attributes())) {
            return true;
        }

        $repClass = $this->relatedElementModel->relatedElementPropertyClassName;
        $rpClass = $this->relatedElementModel->relatedPropertyClassName;
        //TODO: Подумать, возможно getTableCacheTag нужно делать у какого то другого метода. Например у элементов контент это cmsContent как только изменились данные в таблице cmsContent тогда обновляется кэш.
        $dependency = new TagDependency([
            'tags' => [
                $this->relatedElementModel->getTableCacheTag(),
                (new $rpClass())->getTableCacheTag(),
                (new $repClass())->getTableCacheTag(),
            ],
        ]);
        $property = $this->relatedElementModel::getDb()->cache(function ($db) use ($name) {
            return $this->relatedElementModel->getRelatedProperties()->andWhere(['code' => $name])->one();
        }, 3600*24, $dependency);

        if ($property) {
            $this->_defineByProperty($property);

            $pv = $this->relatedElementModel::getDb()->cache(function ($db) use ($property) {
                return $this->relatedElementModel->getRelatedElementProperties()->where(['property_id' => $property->id])->all();
            }, 3600*24, $dependency);

            //$pv = $this->relatedElementModel->getRelatedElementProperties()->where(['property_id' => $property->id])->all();

            $this->_initPropertyValue($property, (array)$pv);
        }

        if (in_array($name, $this->attributes())) {
            return true;
        }

        return false;
    }
public function hasAttribute($name)
    {
        if (in_array($name, $this->attributes())) {
            return true;
        }

        $repClass = $this->relatedElementModel->relatedElementPropertyClassName;
        $rpClass = $this->relatedElementModel->relatedPropertyClassName;
        //TODO: Подумать, возможно getTableCacheTag нужно делать у какого то другого метода. Например у элементов контент это cmsContent как только изменились данные в таблице cmsContent тогда обновляется кэш.
        $dependency = new TagDependency([
            'tags' => [
                $this->relatedElementModel->getTableCacheTag(),
                (new $rpClass())->getTableCacheTag(),
                (new $repClass())->getTableCacheTag(),
            ],
        ]);
        $property = $this->relatedElementModel::getDb()->cache(function ($db) use ($name) {
            return $this->relatedElementModel->getRelatedProperties()->andWhere(['code' => $name])->one();
        }, 3600*24, $dependency);

        if ($property) {
            $this->_defineByProperty($property);

            $pv = $this->relatedElementModel::getDb()->cache(function ($db) use ($property) {
                return $this->relatedElementModel->getRelatedElementProperties()->where(['property_id' => $property->id])->all();
            }, 3600*24, $dependency);

            //$pv = $this->relatedElementModel->getRelatedElementProperties()->where(['property_id' => $property->id])->all();

            $this->_initPropertyValue($property, (array)$pv);
        }

        if (in_array($name, $this->attributes())) {
            return true;
        }

        return false;
    }
public function hasAttribute ( $ name ) { if ( in_array ( $ name , $ this -> attributes ( ) ) ) { return true ; } $ repClass = $ this -> relatedElementModel -> relatedElementPropertyClassName ; $ rpClass = $ this -> relatedElementModel -> relatedPropertyClassName ; //TODO: Подумать, возможно getTableCacheTag нужно делать у какого то другого метода. Например у элементов контент это cmsContent как только изменились данные в таблице cmsContent тогда обновляется кэш. $ dependency = new TagDependency ( [ 'tags' => [ $ this -> relatedElementModel -> getTableCacheTag ( ) , ( new $ rpClass ( ) ) -> getTableCacheTag ( ) , ( new $ repClass ( ) ) -> getTableCacheTag ( ) , ] , ] ) ; $ property = $ this -> relatedElementModel :: getDb ( ) -> cache ( function ( $ db ) use ( $ name ) { return $ this -> relatedElementModel -> getRelatedProperties ( ) -> andWhere ( [ 'code' => $ name ] ) -> one ( ) ; } , 3600 * 24 , $ dependency ) ; if ( $ property ) { $ this -> _defineByProperty ( $ property ) ; $ pv = $ this -> relatedElementModel :: getDb ( ) -> cache ( function ( $ db ) use ( $ property ) { return $ this -> relatedElementModel -> getRelatedElementProperties ( ) -> where ( [ 'property_id' => $ property -> id ] ) -> all ( ) ; } , 3600 * 24 , $ dependency ) ; //$pv = $this->relatedElementModel->getRelatedElementProperties()->where(['property_id' => $property->id])->all(); $ this -> _initPropertyValue ( $ property , ( array ) $ pv ) ; } if ( in_array ( $ name , $ this -> attributes ( ) ) ) { return true ; } return false ; }
Returns a value indicating whether the model has an attribute with the specified name.
@param string $name the name of the attribute
@return boolean whether the model has an attribute with the specified name.
Returns a value indicating whether the model has an attribute with the specified name .