-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathrelationships.php
More file actions
84 lines (59 loc) · 2.05 KB
/
relationships.php
File metadata and controls
84 lines (59 loc) · 2.05 KB
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
declare(strict_types=1);
use alsvanzelf\jsonapi\CollectionDocument;
use alsvanzelf\jsonapi\ResourceDocument;
use alsvanzelf\jsonapi\enums\RelationshipTypeEnum;
use alsvanzelf\jsonapi\objects\RelationshipObject;
use alsvanzelf\jsonapi\objects\ResourceObject;
require __DIR__.'/bootstrap_examples.php';
/**
* the different ways of adding relationships to a resource
*/
$document = new ResourceDocument('user', 1);
$ship1Resource = new ResourceObject('ship', 24);
$ship1Resource->add('foo', 'bar');
$ship2Resource = new ResourceObject('ship', 42);
$ship2Resource->add('bar', 'baz');
$friend1Resource = new ResourceObject('user', 24);
$friend1Resource->add('foo', 'bar');
$friend2Resource = new ResourceObject('user', 42);
$friend2Resource->add('bar', 'baz');
$dockResource = new ResourceObject('dock', 3);
$dockResource->add('bar', 'baf');
/**
* to-one relationship
*/
$document->addRelationship('included-ship', $ship1Resource);
/**
* to-one relationship, without included resource
*/
$options = ['includeContainedResources' => false];
$document->addRelationship('excluded-ship', $ship2Resource, options: $options);
/**
* to-many relationship, one-by-one
*/
$relationshipObject = new RelationshipObject(type: RelationshipTypeEnum::ToMany);
$relationshipObject->addResource($friend1Resource);
$relationshipObject->addResource($friend2Resource);
$document->addRelationshipObject('one-by-one-friends', $relationshipObject);
/**
* to-many relationship, all-at-once
*/
$friends = new CollectionDocument();
$friends->addResource($friend1Resource);
$friends->addResource($friend2Resource);
$document->addRelationship('included-friends', $friends);
/**
* to-many relationship, different types
*/
$relationshipObject = new RelationshipObject(type: RelationshipTypeEnum::ToMany);
$relationshipObject->addResource($ship1Resource);
$relationshipObject->addResource($dockResource);
$document->addRelationshipObject('one-by-one-neighbours', $relationshipObject);
/**
* sending the response
*/
$options = [
'prettyPrint' => true,
];
echo '<pre>'.$document->toJson($options);