Skip to content

Commit 672c084

Browse files
committed
add setter for relationships
1 parent 491c94a commit 672c084

File tree

3 files changed

+25
-3
lines changed

3 files changed

+25
-3
lines changed

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ The preferred way to install this extension is through [composer](http://getcomp
1212
Either run
1313

1414
```
15-
php composer.phar require --prefer-dist tuyakhov/yii2-json-api "dev-master"
15+
php composer.phar require --prefer-dist tuyakhov/yii2-json-api "*"
1616
```
1717

1818
or add
1919

2020
```
21-
"tuyakhov/yii2-json-api": "dev-master"
21+
"tuyakhov/yii2-json-api": "*"
2222
```
2323

2424
to the require section of your `composer.json` file.
@@ -52,8 +52,9 @@ class Controller extends \yii\rest\Controller
5252
Model:
5353
```php
5454
use tuyakhov\jsonapi\ResourceTrait;
55+
use tuyakhov\jsonapi\ResourceInterface;
5556

56-
class User extends ActiveRecord
57+
class User extends ActiveRecord implements ResourceInterface
5758
{
5859
use ResourceTrait;
5960
}

src/ResourceInterface.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ public function getResourceAttributes(array $fields = []);
1111

1212
public function getResourceRelationships();
1313

14+
public function setResourceRelationship($name, $relationship);
15+
1416
public function getLinks();
1517

1618
public function getMeta();

src/ResourceTrait.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
use yii\base\Arrayable;
99
use yii\db\ActiveRecordInterface;
10+
use yii\db\BaseActiveRecord;
1011
use yii\helpers\ArrayHelper;
1112
use yii\helpers\Inflector;
1213

@@ -71,6 +72,24 @@ public function getResourceRelationships()
7172
return $relationships;
7273
}
7374

75+
/**
76+
* @param string $name the case sensitive name of the relationship.
77+
* @param $relationship
78+
*/
79+
public function setResourceRelationships($name, $relationship)
80+
{
81+
/** @var $this BaseActiveRecord */
82+
$this->unlinkAll($name);
83+
if (!is_array($relationship)) {
84+
$relationship = [$relationship];
85+
}
86+
foreach ($relationship as $key => $value) {
87+
if ($value instanceof ActiveRecordInterface) {
88+
$this->link($name, $value);
89+
}
90+
}
91+
}
92+
7493
/**
7594
* @param array $fields
7695
* @param array $expand

0 commit comments

Comments
 (0)