ILIAS
trunk Revision v11.0_alpha-3011-gc6b235a2e85
◀ ilDoc Overview
Integrity.php
Go to the documentation of this file.
1
<?php
2
19
declare(strict_types=1);
20
21
namespace
ILIAS\components\Database\Integrity
;
22
23
use
ilDBInterface
;
24
25
class
Integrity
26
{
27
public
function
__construct
(
28
private
ilDBInterface
$database
29
) {
30
}
31
50
public
function
check
(
Definition
$definition):
Result
51
{
52
$on = [];
53
$where = [];
54
// $definition->associations() always returns a non empty array
55
foreach
($definition->
associations
() as $association) {
56
$on[] = sprintf(
'%s = %s'
, $association->field()->fieldName(), $association->referenceField()->fieldName());
57
$where[] = sprintf(
'%s IS NULL'
, $association->referenceField()->fieldName());
58
foreach
($definition->
ignoreValues
() as $value_to_ignore) {
59
$where[] = sprintf(
'%s %s'
, $association->field()->fieldName(), $value_to_ignore);
60
}
61
}
62
63
$result = $this->
database
->query(sprintf(
64
'SELECT COUNT(1) as violations FROM %s LEFT JOIN %s ON %s WHERE %s'
,
65
$definition->
tableName
(),
66
$definition->
referenceTableName
(),
67
implode(
' AND '
, $on),
68
implode(
' AND '
, $where),
69
));
70
71
$result = $this->
database
->fetchAssoc($result);
72
73
return
new
Result
((
int
) $result[
'violations'
]);
74
}
75
}
ILIAS\components\Database\Integrity\Definition
Definition:
Definition.php:26
ILIAS\components\Database\Integrity\Definition\ignoreValues
ignoreValues()
Definition:
Definition.php:76
ILIAS\components\Database\Integrity\Definition\referenceTableName
referenceTableName()
Definition:
Definition.php:81
ILIAS\components\Database\Integrity\Definition\associations
associations()
Definition:
Definition.php:68
ILIAS\components\Database\Integrity\Definition\tableName
tableName()
Definition:
Definition.php:60
ILIAS\components\Database\Integrity\Integrity
Definition:
Integrity.php:26
ILIAS\components\Database\Integrity\Integrity\check
check(Definition $definition)
Example: $violations = $this->check(new Definition([ new Association(new Field('mail',...
Definition:
Integrity.php:50
ILIAS\components\Database\Integrity\Integrity\__construct
__construct(private ilDBInterface $database)
Definition:
Integrity.php:27
ILIAS\components\Database\Integrity\Result
Definition:
Result.php:24
ilDBInterface
Interface ilDBInterface.
Definition:
interface.ilDBInterface.php:30
ILIAS\Repository\database
database()
Definition:
trait.GlobalDICDomainServices.php:146
ILIAS\components\Database\Integrity
Definition:
Association.php:21
components
ILIAS
Database
classes
Integrity
Integrity.php
Generated on Sat Oct 18 2025 23:02:55 for ILIAS by
1.9.4 (using
Doxyfile
)