forked from doctrine/orm
/
JoinTable.php
41 lines (35 loc) · 1.2 KB
/
JoinTable.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
declare(strict_types=1);
namespace Doctrine\ORM\Mapping;
use Attribute;
use Doctrine\Common\Annotations\Annotation\NamedArgumentConstructor;
/**
* @Annotation
* @NamedArgumentConstructor()
* @Target({"PROPERTY","ANNOTATION"})
*/
#[Attribute(Attribute::TARGET_PROPERTY)]
final class JoinTable implements MappingAttribute
{
/** @var array<JoinColumn> */
public readonly array $joinColumns;
/** @var array<JoinColumn> */
public readonly array $inverseJoinColumns;
/**
* @param array<JoinColumn>|JoinColumn $joinColumns
* @param array<JoinColumn>|JoinColumn $inverseJoinColumns
* @param array<string, mixed> $options
*/
public function __construct(
public readonly string|null $name = null,
public readonly string|null $schema = null,
array|JoinColumn $joinColumns = [],
array|JoinColumn $inverseJoinColumns = [],
public readonly array $options = [],
) {
$this->joinColumns = $joinColumns instanceof JoinColumn ? [$joinColumns] : $joinColumns;
$this->inverseJoinColumns = $inverseJoinColumns instanceof JoinColumn
? [$inverseJoinColumns]
: $inverseJoinColumns;
}
}