forked from doctrine/mongodb-odm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEmployee.php
64 lines (53 loc) · 1.3 KB
/
Employee.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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
declare(strict_types=1);
namespace Documents\GraphLookup;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
/**
* @ODM\Document
*/
class Employee
{
/**
* @ODM\Id
*
* @var string|null
*/
public $id;
/**
* @ODM\Field(type="string")
*
* @var string
*/
public $name;
/**
* @ODM\ReferenceOne(targetDocument=Employee::class, cascade={"persist"}, storeAs="ref")
*
* @var Employee|null
*/
public $reportsTo;
/**
* @ODM\ReferenceOne(targetDocument=Employee::class, cascade={"persist"}, storeAs="id")
*
* @var Employee|null
*/
public $reportsToId;
/**
* @ODM\ReferenceMany(targetDocument=Employee::class, mappedBy="reportsTo")
*
* @var Collection<int, Employee>
*/
public $reportingEmployees;
public function __construct(string $name, ?Employee $reportsTo = null)
{
$this->name = $name;
$this->reportsTo = $reportsTo;
$this->reportsToId = $reportsTo;
$this->reportingEmployees = new ArrayCollection();
if (! $reportsTo) {
return;
}
$reportsTo->reportingEmployees[] = $this;
}
}