Skip to content

Instantly share code, notes, and snippets.

@lucvht
Created October 5, 2014 12:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lucvht/37c2b69f867f95494f81 to your computer and use it in GitHub Desktop.
Save lucvht/37c2b69f867f95494f81 to your computer and use it in GitHub Desktop.
<?php
class BaseModel extends \Phalcon\Mvc\Model {
private function checkRelationsCommon($operation,$fields,$referenceModel, $referencedFields) {
$feedback = [];
if (!property_exists($this,$fields)) {
$feedback[] = "Cannot find field " . get_class($this) . "->${fields} used by ${operation} in Object " . get_class($this);
}
if (!property_exists($referenceModel,$referencedFields)) {
$feedback[] = "Cannot find field ${referenceModel}->${referencedFields} used by ${operation} in Object " . get_class($this);
}
return $feedback;
}
public function belongsTo($fields, $referenceModel, $referencedFields, $options = NULL) {
$feedback = [];
$feedback = array_merge($feedback,$this->checkRelationsCommon(__FUNCTION__,$fields,$referenceModel,$referencedFields));
if (count($feedback) > 0) {
echo implode("<br>",$feedback);
} else {
return parent::belongsTo($fields, $referenceModel, $referencedFields, $options);
}
return false;
}
public function hasOne($fields, $referenceModel, $referencedFields, $options=null) {
$feedback = [];
$feedback = array_merge($feedback,$this->checkRelationsCommon(__FUNCTION__,$fields,$referenceModel,$referencedFields));
if (count($feedback) > 0) {
echo implode("<br>",$feedback);
} else {
return parent::hasOne($fields, $referenceModel, $referencedFields, $options);
}
return false;
}
public function hasMany($fields, $referenceModel, $referencedFields, $options=null) {
$feedback = [];
$feedback = array_merge($feedback,$this->checkRelationsCommon(__FUNCTION__,$fields,$referenceModel,$referencedFields));
if (count($feedback) > 0) {
echo implode("<br>",$feedback);
} else {
return parent::hasMany($fields, $referenceModel, $referencedFields, $options);
}
return false;
}
public function hasManyToMany($fields, $intermediateModel, $intermediateFields, $intermediateReferencedFields, $referenceModel, $referencedFields, $options = NULL) {
$feedback = [];
$feedback = array_merge($feedback,$this->checkRelationsCommon(__FUNCTION__,$fields,$referenceModel,$referencedFields));
if (!property_exists($intermediateModel,$intermediateFields)) {
$feedback[] = "Cannot find field ${intermediateModel}->${intermediateFields} used by " . __FUNCTION__ . " in Object " . get_class($this);
}
if (!property_exists($intermediateModel,$intermediateReferencedFields)) {
$feedback[] = "Cannot find field ${intermediateModel}->${intermediateReferencedFields} used by " . __FUNCTION__ . " in Object " . get_class($this);
}
if (count($feedback) > 0) {
echo implode("<br>",$feedback);
} else {
return parent::hasManyToMany($fields, $intermediateModel, $intermediateFields, $intermediateReferencedFields, $referenceModel, $referencedFields, $options);
}
return false;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment