ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.arJoinCollection.php
Go to the documentation of this file.
1<?php
2
25{
26 protected array $table_names = [];
27
31 public function getSaveTableName(arStatement $arStatement): string
32 {
33 $tableName = $arStatement->getTableName();
34 if (in_array($tableName, $this->table_names, true)) {
35 $vals = array_count_values($this->table_names);
36 $next = $vals[$tableName] + 1;
37 $arStatement->setFullNames(true);
38 $arStatement->setIsMapped(true);
39
40 return $tableName . '_' . $next;
41 }
42 return $tableName;
43 }
44
45 #[\Override]
46 public function add(arStatement $arStatement): void
47 {
48 $arStatement->setTableNameAs($this->getSaveTableName($arStatement));
49 $this->table_names[] = $arStatement->getTableName();
50 parent::add($arStatement);
51 }
52
53 public function asSQLStatement(ilDBInterface $db): string
54 {
55 $return = '';
56 if ($this->hasStatements()) {
57 foreach ($this->getJoins() as $arJoin) {
58 $return .= $arJoin->asSQLStatement($this->getAr(), $db);
59 }
60 }
61
62 return $return;
63 }
64
68 public function getJoins(): array
69 {
70 return $this->statements;
71 }
72}
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
add(arStatement $arStatement)
asSQLStatement(ilDBInterface $db)
getSaveTableName(arStatement $arStatement)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setTableNameAs(string $table_name_as)
Interface ilDBInterface.