本文整理汇总了PHP中RedBeanModel::getRelationType方法的典型用法代码示例。如果您正苦于以下问题:PHP RedBeanModel::getRelationType方法的具体用法?PHP RedBeanModel::getRelationType怎么用?PHP RedBeanModel::getRelationType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类RedBeanModel
的用法示例。
在下文中一共展示了RedBeanModel::getRelationType方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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: isRelationASingularRelation
/**
* @param string $relation
* @return bool
* @throws NotSupportedException if the relation string is malformed
*/
public function isRelationASingularRelation($relation)
{
assert('is_string($relation)');
$delimiter = FormModelUtil::DELIMITER;
$relationAndInferredData = explode($delimiter, $relation);
$derivedRelations = $this->getDerivedRelationsViaCastedUpModelData();
if (count($relationAndInferredData) == 3) {
list($modelClassName, $relation, $notUsed) = $relationAndInferredData;
$type = $this->model->getRelationType($relation);
} elseif (count($relationAndInferredData) == 2) {
list($relation, $notUsed) = $relationAndInferredData;
$type = $this->model->getRelationType($relation);
} elseif (count($relationAndInferredData) == 1 && isset($derivedRelations[$relation])) {
$type = $this->model->getDerivedRelationType($relation);
} elseif (count($relationAndInferredData) == 1) {
$type = $this->model->getRelationType($relation);
} else {
throw new NotSupportedException();
}
if ($type == RedBeanModel::HAS_ONE || $type == RedBeanModel::HAS_ONE_BELONGS_TO || $type == RedBeanModel::HAS_MANY_BELONGS_TO) {
return true;
}
return false;
}
示例3: 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;
}
}
}
示例4: manageModelRelations
/**
* @param RedBeanModel $model
* @param array $modelRelations
* @return bool
* @throws ApiException
*/
protected function manageModelRelations($model, $modelRelations)
{
try {
if (isset($modelRelations) && !empty($modelRelations)) {
foreach ($modelRelations as $modelRelation => $relations) {
if ($model->isAttribute($modelRelation) && ($model->getRelationType($modelRelation) == RedBeanModel::HAS_MANY || $model->getRelationType($modelRelation) == RedBeanModel::MANY_MANY)) {
foreach ($relations as $relation) {
$relatedModelClassName = $relation['modelClassName'];
try {
$relatedModel = $relatedModelClassName::getById(intval($relation['modelId']));
} catch (Exception $e) {
$message = Zurmo::t('ZurmoModule', 'The related model ID specified was invalid.');
throw new NotFoundException($message);
}
if ($relation['action'] == 'add') {
$model->{$modelRelation}->add($relatedModel);
} elseif ($relation['action'] == 'remove') {
$model->{$modelRelation}->remove($relatedModel);
} else {
$message = Zurmo::t('ZurmoModule', 'Unsupported action.');
throw new NotSupportedException($message);
}
}
} else {
$message = Zurmo::t('ZurmoModule', 'You can add relations only for HAS_MANY and MANY_MANY relations.');
throw new NotSupportedException($message);
}
}
}
} catch (Exception $e) {
$message = $e->getMessage();
throw new ApiException($message);
}
return true;
}