Esempio n. 1
0
 /**
  * Add/Update foreign key constraint
  * @param \DB\SQL\MySQL\Constraint $constraint
  */
 public function addConstraint($constraint)
 {
     if ($constraint->isValid()) {
         $this->queries[] = "\n              ALTER TABLE " . $this->db->quotekey($this->name) . "\n                ADD CONSTRAINT " . $this->db->quotekey($constraint->getConstraintName()) . "\n                FOREIGN KEY (" . implode(', ', $constraint->getKeys()) . ")\n                REFERENCES " . $this->db->quotekey($constraint->getReferencedTable()) . " (" . implode(', ', $constraint->getReferencedCols()) . ")\n                  ON DELETE " . $constraint->getOnDelete() . "\n                  ON UPDATE " . $constraint->getOnUpdate() . ";";
     } else {
         trigger_error(sprintf(self::TEXT_ConstraintNotValid, 'table: ' . $this->name . ' constraintName: ' . $constraint->getConstraintName()));
     }
 }
Esempio n. 2
0
 /**
  * get a new column based constraint
  * $constraintData['table'] => referenceTable name (required)
  * $constraintData['id'] => referenceColumns (optional) default: ['id']
  * $constraintData['on-delete'] => ON DELETE action (optional) default: see \DB\SQL\MySQL\Constraint const
  * $constraintData['on-update'] => ON UPDATE action (optional) default: see \DB\SQL\MySQL\Constraint const
  *
  * @param array $constraintData
  * @return \DB\SQL\MySQL\Constraint
  */
 public function newConstraint($constraintData)
 {
     $constraint = null;
     if (isset($constraintData['table'])) {
         if (isset($constraintData['column'])) {
             $constraintData['column'] = (array) $constraintData['column'];
         } else {
             $constraintData['column'] = ['id'];
         }
         $constraint = new Constraint($this->table, $this->name, $constraintData['table'], $constraintData['column']);
         if (isset($constraintData['on-delete'])) {
             $constraint->setOnDelete($constraintData['on-delete']);
         }
         if (isset($constraintData['on-update'])) {
             $constraint->setOnUpdate($constraintData['on-update']);
         }
     } else {
         trigger_error(sprintf(self::TEXT_TableNameMissing, $this->table->name . '->' . $this->name));
     }
     return $constraint;
 }