Commit 41d28002 authored by Benjamin Eberlei's avatar Benjamin Eberlei

DBAL-144 - Dont throw exception when no primary key exists

parent 970c8ab6
......@@ -88,11 +88,11 @@ class Table extends AbstractAsset
$this->_setName($tableName);
$this->_idGeneratorType = $idGeneratorType;
foreach ($columns AS $column) {
$this->_addColumn($column);
}
foreach ($indexes AS $idx) {
$this->_addIndex($idx);
}
......@@ -252,7 +252,7 @@ class Table extends AbstractAsset
/**
* Change Column Details
*
*
* @param string $columnName
* @param array $options
* @return Table
......@@ -266,7 +266,7 @@ class Table extends AbstractAsset
/**
* Drop Column from Table
*
*
* @param string $columnName
* @return Table
*/
......@@ -344,7 +344,7 @@ class Table extends AbstractAsset
throw SchemaException::columnDoesNotExist($columnName, $this->_name);
}
}
$constraint = new ForeignKeyConstraint(
$localColumnNames, $foreignTableName, $foreignColumnNames, $name, $options
);
......@@ -381,7 +381,7 @@ class Table extends AbstractAsset
/**
* Add index to table
*
*
* @param Index $indexCandidate
* @return Table
*/
......@@ -422,7 +422,7 @@ class Table extends AbstractAsset
protected function _addForeignKeyConstraint(ForeignKeyConstraint $constraint)
{
$constraint->setLocalTable($this);
if(strlen($constraint->getName())) {
$name = $constraint->getName();
} else {
......@@ -475,7 +475,7 @@ class Table extends AbstractAsset
$pkCols = array();
$fkCols = array();
if ($this->hasIndex($this->_primaryKeyName)) {
if ($this->hasPrimaryKey()) {
$pkCols = $this->getPrimaryKey()->getColumns();
}
foreach ($this->getForeignKeys() AS $fk) {
......@@ -505,7 +505,7 @@ class Table extends AbstractAsset
/**
* Get a column instance
*
*
* @param string $columnName
* @return Column
*/
......@@ -520,10 +520,13 @@ class Table extends AbstractAsset
}
/**
* @return Index
* @return Index|null
*/
public function getPrimaryKey()
{
if (!$this->hasPrimaryKey()) {
return null;
}
return $this->getIndex($this->_primaryKeyName);
}
......
......@@ -35,7 +35,7 @@ class Graphviz implements \Doctrine\DBAL\Schema\Visitor\Visitor
public function acceptColumn(Table $table, Column $column)
{
}
public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint)
......@@ -53,7 +53,7 @@ class Graphviz implements \Doctrine\DBAL\Schema\Visitor\Visitor
public function acceptIndex(Table $table, Index $index)
{
}
public function acceptSchema(Schema $schema)
......@@ -68,7 +68,7 @@ class Graphviz implements \Doctrine\DBAL\Schema\Visitor\Visitor
public function acceptSequence(Sequence $sequence)
{
}
public function acceptTable(Table $table)
......@@ -99,7 +99,7 @@ class Graphviz implements \Doctrine\DBAL\Schema\Visitor\Visitor
$label .= '<FONT COLOR="#2e3436" FACE="Helvetica" POINT-SIZE="12">' . $columnLabel . '</FONT>';
$label .= '</TD><TD BORDER="0" ALIGN="LEFT" BGCOLOR="#eeeeec"><FONT COLOR="#2e3436" FACE="Helvetica" POINT-SIZE="10">' . strtolower($column->getType()) . '</FONT></TD>';
$label .= '<TD BORDER="0" ALIGN="RIGHT" BGCOLOR="#eeeeec" PORT="col'.$column->getName().'">';
if (in_array($column->getName(), $table->getPrimaryKey()->getColumns())) {
if ($table->hasPrimaryKey() && in_array($column->getName(), $table->getPrimaryKey()->getColumns())) {
$label .= "\xe2\x9c\xb7";
}
$label .= '</TD></TR>';
......@@ -139,7 +139,7 @@ class Graphviz implements \Doctrine\DBAL\Schema\Visitor\Visitor
* You have to convert the output into a viewable format. For example use "neato" on linux systems
* and execute:
*
* neato -Tpng -o er.png er.dot
* neato -Tpng -o er.png er.dot
*
* @param string $filename
* @return void
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment