本文整理汇总了PHP中RedBeanModel::isRelation方法的典型用法代码示例。如果您正苦于以下问题:PHP RedBeanModel::isRelation方法的具体用法?PHP RedBeanModel::isRelation怎么用?PHP RedBeanModel::isRelation使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类RedBeanModel
的用法示例。
在下文中一共展示了RedBeanModel::isRelation方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getData
/**
*
* Get model properties as array.
* return array
*/
public function getData()
{
$data = array();
$data['id'] = $this->model->id;
$retrievableAttributes = static::resolveRetrievableAttributesByModel($this->model);
foreach ($this->model->getAttributes($retrievableAttributes) as $attributeName => $notUsed) {
$type = ModelAttributeToMixedArrayTypeUtil::getType($this->model, $attributeName);
$adapterClassName = $type . 'RedBeanModelAttributeValueToArrayValueAdapter';
if ($type != null && @class_exists($adapterClassName) && !($this->model->isRelation($attributeName) && $this->model->getRelationType($attributeName) != RedBeanModel::HAS_ONE)) {
$adapter = new $adapterClassName($this->model, $attributeName);
$adapter->resolveData($data);
} elseif ($this->model->isOwnedRelation($attributeName) && ($this->model->getRelationType($attributeName) == RedBeanModel::HAS_ONE || $this->model->getRelationType($attributeName) == RedBeanModel::HAS_MANY_BELONGS_TO)) {
if ($this->model->{$attributeName}->id > 0) {
$util = new ModelToArrayAdapter($this->model->{$attributeName});
$relatedData = $util->getData();
$data[$attributeName] = $relatedData;
} else {
$data[$attributeName] = null;
}
} elseif ($this->model->isRelation($attributeName) && $this->model->getRelationType($attributeName) == RedBeanModel::HAS_ONE) {
if ($this->model->{$attributeName}->id > 0) {
$data[$attributeName] = array('id' => $this->model->{$attributeName}->id);
} else {
$data[$attributeName] = null;
}
}
}
return $data;
}
示例2: resolveDynamicallyDerivedAttributesForActionsOrTimeTriggerData
/**
* @param boolean $includeRequired
* @param boolean $includeNonRequired
* @param $includeReadOnly
* @return array
*/
protected function resolveDynamicallyDerivedAttributesForActionsOrTimeTriggerData($includeRequired = false, $includeNonRequired = false, $includeReadOnly = false)
{
assert('is_bool($includeRequired)');
assert('is_bool($includeNonRequired)');
assert('is_bool($includeReadOnly)');
$attributes = array();
foreach ($this->model->getAttributes() as $attribute => $notUsed) {
if (!$this->model instanceof User && $this->model->isRelation($attribute) && (!$this->model->isAttributeReadOnly($attribute) || $includeReadOnly) && $this->model->getRelationModelClassName($attribute) == 'User') {
$attributeIsRequired = $this->model->isAttributeRequired($attribute);
if ($includeNonRequired && !$attributeIsRequired || $includeRequired && $attributeIsRequired) {
$attributes[$attribute . FormModelUtil::DELIMITER . self::DYNAMIC_ATTRIBUTE_USER] = array('label' => $this->model->getAttributeLabel($attribute));
}
}
if ($this->model->isRelation($attribute) && $this->model->isOwnedRelation($attribute) && $this->isRelationASingularRelation($attribute) && ($this->model->getRelationModelClassName($attribute) == 'Address' || $this->model->getRelationModelClassName($attribute) == 'Email')) {
$relatedModel = $this->model->{$attribute};
//Assumes only Email or Address are possible owned models here
$zurmoRules = WorkflowRules::makeByModuleClassName('ZurmoModule');
foreach ($relatedModel->getAttributes() as $relatedAttribute => $notUsed) {
if (!$relatedModel->isAttributeReadOnly($relatedAttribute) && !$relatedModel->isRelation($relatedAttribute) && $zurmoRules->attributeCanBeTriggered($relatedModel, $relatedAttribute)) {
$relatedAttributeIsRequired = $relatedModel->isAttributeRequired($relatedAttribute);
if ($includeNonRequired && !$relatedAttributeIsRequired || $includeRequired && $relatedAttributeIsRequired) {
$attributes[$attribute . FormModelUtil::RELATION_DELIMITER . $relatedAttribute] = array('label' => $this->model->getAttributeLabel($attribute) . ' ' . ComponentForWorkflowForm::DISPLAY_LABEL_RELATION_DIVIDER . ' ' . $relatedModel->getAttributeLabel($relatedAttribute));
}
}
}
}
}
return $attributes;
}
示例3: addRelatedModelAccountToModel
/**
* Copy the account from a related model to a activity items
* @param RedBeanModel $model
* @param RedBeanModel $relatedModel
*/
protected function addRelatedModelAccountToModel(RedBeanModel $model, RedBeanModel $relatedModel)
{
$metadata = Activity::getMetadata();
if ($relatedModel->isRelation('account') && isset($relatedModel->account) && $relatedModel->account->id > 0 && in_array(get_class($relatedModel->account), $metadata['Activity']['activityItemsModelClassNames'])) {
$model->activityItems->add($relatedModel->account);
}
}
示例4: getDynamicallyDerivedAttributesData
/**
* @return array
*/
protected function getDynamicallyDerivedAttributesData()
{
if (isset(self::$dynamicallyDerivedAttributesData[get_class($this->model)])) {
return self::$dynamicallyDerivedAttributesData[get_class($this->model)];
}
$attributes = array();
foreach ($this->model->getAttributes() as $attribute => $notUsed) {
if (!$this->model instanceof User && $this->model->isRelation($attribute) && $this->model->getRelationModelClassName($attribute) == 'User') {
$attributes[$attribute . FormModelUtil::DELIMITER . self::DYNAMIC_ATTRIBUTE_USER] = array('label' => $this->model->getAttributeLabel($attribute));
}
}
self::$dynamicallyDerivedAttributesData[get_class($this->model)] = $attributes;
return self::$dynamicallyDerivedAttributesData[get_class($this->model)];
}
示例5: copy
/**
* Copy attributes from one model to another. If the attributes are relations, then only copy when it is a
* HAS_ONE variant. In the case that the relation is an OwnedModel, take special consideration for CurrencyValue
* CustomField, and MultipleValuesCustomField models. If it is owned and not one of those 3, then it should just
* copy the OwnedModel nonRelation attributes. An example of that would be Address or Email
* @param RedBeanModel $model
* @param RedBeanModel $copyToModel - model to copy attribute values from $model to
*/
public static function copy(RedBeanModel $model, RedBeanModel $copyToModel)
{
$copyToModel->setIsCopied();
foreach ($model->attributeNames() as $attributeName) {
if ($attributeName == 'owner') {
continue;
}
$isReadOnly = $model->isAttributeReadOnly($attributeName);
if (!$model->isRelation($attributeName) && !$isReadOnly) {
static::copyNonRelation($model, $attributeName, $copyToModel);
} elseif ($model->isRelation($attributeName) && !$isReadOnly && $model->isRelationTypeAHasOneVariant($attributeName)) {
static::copyRelation($model, $attributeName, $copyToModel);
}
}
if ($model instanceof OwnedSecurableItem) {
static::copyRelation($model, 'owner', $copyToModel);
}
static::resolveExplicitPermissions($model, $copyToModel);
}
示例6: resolveOneToManyPostCreateActionSaveModelCache
/**
* @see https://www.pivotaltracker.com/story/show/58372836
* This method is called to resolve the issue of the cache having incorrect information and requiring a clearCache
* Now after saving, it will resolve the related model correctly.
* @param RedBeanModel $precedingModel
* @param string $precedingRelation
* @param RedBeanModel $model
*/
protected function resolveOneToManyPostCreateActionSaveModelCache(RedBeanModel $precedingModel, $precedingRelation, RedBeanModel $model)
{
if ($precedingModel->{$precedingRelation} instanceof RedBeanOneToManyRelatedModels) {
$relationToUse = null;
foreach ($model->getAttributes() as $attributeName => $notUsed) {
if ($model->isRelation($attributeName)) {
if (RedBeanModel::relationLinksToPrecedingRelation(get_class($model), $attributeName, get_class($precedingModel), $precedingRelation)) {
$relationToUse = $attributeName;
break;
}
}
}
if ($relationToUse != null) {
$model->{$relationToUse} = $precedingModel;
}
}
}
示例7: getHasManyOpposingRelationName
public static function getHasManyOpposingRelationName(RedBeanModel $model, $precedingModelClassName, $precedingRelation)
{
assert('is_string($precedingModelClassName)');
assert('is_string($precedingRelation)');
foreach ($model->attributeNames() as $attributeName) {
if ($model->isRelation($attributeName) && ($model->getRelationType($attributeName) == RedBeanModel::HAS_ONE || $model->getRelationType($attributeName) == RedBeanModel::HAS_MANY_BELONGS_TO) && static::relationLinksToPrecedingRelation(get_class($model), $attributeName, $precedingModelClassName, $precedingRelation)) {
return $attributeName;
}
}
}
示例8: addRelatedModelAccountToModel
/**
* Copy the account from a related model to a Note activity items
* ToDo: This shouldn't be in a view, but as we already add some activity items in this view, it is fine for now
* ToDo: but we should think about refactoring it
* @param RedBeanModel $model
* @param RedBeanModel $relatedModel
*/
protected function addRelatedModelAccountToModel(RedBeanModel $model, RedBeanModel $relatedModel)
{
if ($relatedModel->isRelation('account') && isset($relatedModel->account) && $relatedModel->account->id > 0) {
$model->activityItems->add($relatedModel->account);
}
}