Browse Source

Added support for on_delete and on_cascade of foreign keys.

Taylor Otwell 12 years ago
parent
commit
ce9f4f1db7
1 changed files with 16 additions and 1 deletions
  1. 16 1
      laravel/database/schema/grammars/grammar.php

+ 16 - 1
laravel/database/schema/grammars/grammar.php

@@ -32,7 +32,22 @@ abstract class Grammar extends \Laravel\Database\Grammar {
 
 		$sql = "ALTER TABLE $table ADD CONSTRAINT $name ";
 
-		return $sql .= "FOREIGN KEY ($foreign) REFERENCES $on ($referenced)";
+		$sql .= "FOREIGN KEY ($foreign) REFERENCES $on ($referenced)";
+
+		// Finally we will check for any "on delete" or "on update" options for
+		// the foreign key. These control the behavior of the constraint when
+		// an update or delete statement is run against the record.
+		if ( ! is_null($command->on_delete))
+		{
+			$sql .= " ON DELETE {$command->on_delete}";
+		}
+
+		if ( ! is_null($command->on_update))
+		{
+			$sql .= " ON UPDATE {$command->on_update}";
+		}
+
+		return $sql;
 	}
 
 	/**