. */ namespace Doctrine\ORM\Mapping\Builder; /** * ManyToMany Association Builder * * @license http://www.opensource.org/licenses/mit-license.php MIT * @link www.doctrine-project.com * @since 2.0 * @author Benjamin Eberlei */ class ManyToManyAssociationBuilder extends OneToManyAssociationBuilder { /** * @var string|null */ private $joinTableName; /** * @var array */ private $inverseJoinColumns = array(); /** * @param string $name * * @return ManyToManyAssociationBuilder */ public function setJoinTable($name) { $this->joinTableName = $name; return $this; } /** * Adds Inverse Join Columns. * * @param string $columnName * @param string $referencedColumnName * @param bool $nullable * @param bool $unique * @param string|null $onDelete * @param string|null $columnDef * * @return ManyToManyAssociationBuilder */ public function addInverseJoinColumn($columnName, $referencedColumnName, $nullable = true, $unique = false, $onDelete = null, $columnDef = null) { $this->inverseJoinColumns[] = array( 'name' => $columnName, 'referencedColumnName' => $referencedColumnName, 'nullable' => $nullable, 'unique' => $unique, 'onDelete' => $onDelete, 'columnDefinition' => $columnDef, ); return $this; } /** * @return ClassMetadataBuilder */ public function build() { $mapping = $this->mapping; $mapping['joinTable'] = array(); if ($this->joinColumns) { $mapping['joinTable']['joinColumns'] = $this->joinColumns; } if ($this->inverseJoinColumns) { $mapping['joinTable']['inverseJoinColumns'] = $this->inverseJoinColumns; } if ($this->joinTableName) { $mapping['joinTable']['name'] = $this->joinTableName; } $cm = $this->builder->getClassMetadata(); $cm->mapManyToMany($mapping); return $this->builder; } }