Source for file IntegrityMapper.php
Documentation is available at IntegrityMapper.php
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.phpdoctrine.com>.
* Doctrine_IntegrityMapper
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @category Object Relational Mapping
* @link www.phpdoctrine.com
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
->getDeleteActions($record->getTable()->getComponentName());
foreach ($record->getTable()->getRelations() as $relation) {
$componentName =
$relation->getTable()->getComponentName();
foreach($record->get($relation->getAlias()) as $coll) {
foreach ($coll as $record) {
if (isset
($deleteActions[$componentName])) {
if ($deleteActions[$componentName] ===
'SET NULL') {
$record->set($relation->getForeign(), null);
} elseif ($deleteActions[$componentName] ===
'CASCADE') {
$this->conn->transaction->addDelete($record);
$root =
$record->getTable()->getComponentName();
$aliases[$rootAlias] =
$root;
foreach ((array)
$record->getTable()->getIdentifier() as $id) {
$field =
$rootAlias .
'.' .
$id;
$cond[] =
$field .
' = ?';
$params =
$record->get($id);
$q->select($fields)->from($root.
' ' .
$rootAlias);
foreach ($aliases as $alias =>
$name) {
$q->leftJoin($rootAlias .
'.' .
$name .
' ' .
$alias);
$q->where(implode(' AND ', $cond));
return $q->execute(array($params));
->getDeleteActions($table->getComponentName());
foreach ($table->getRelations() as $relation) {
$componentName =
$relation->getTable()->getComponentName();
if (in_array($componentName, $components)) {
$components[] =
$componentName;
if ( ! isset
($indexes[$alias])) {
if (isset
($deleteActions[$componentName])) {
if (isset
($aliases[$alias])) {
$alias =
$alias . ++
$indexes[$alias];
$aliases[$alias] =
$relation->getAlias();
if ($deleteActions[$componentName] ===
'SET NULL') {
foreach ((array)
$relation->getForeign() as $foreign) {
$fields .=
', ' .
$alias .
'.' .
$foreign;
foreach ((array)
$relation->getLocal() as $foreign) {
$fields .=
', ' .
$alias .
'.' .
$foreign;
foreach ((array)
$relation->getTable()->getIdentifier() as $id) {
$fields .=
', ' .
$alias .
'.' .
$id;
if ($deleteActions[$componentName] ===
'CASCADE') {