Skip to content

Commit 7dcb7ef

Browse files
committed
Remove fields, extraFields method
1 parent 43dc9ae commit 7dcb7ef

File tree

2 files changed

+21
-23
lines changed

2 files changed

+21
-23
lines changed

src/ResourceTrait.php

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77

88
use yii\base\Arrayable;
99
use yii\db\ActiveRecordInterface;
10-
use yii\db\BaseActiveRecord;
11-
use yii\helpers\ArrayHelper;
1210
use yii\helpers\Inflector;
1311

1412
trait ResourceTrait
@@ -41,8 +39,14 @@ public function getType()
4139
public function getResourceAttributes(array $fields = [])
4240
{
4341
$attributes = [];
42+
if ($this instanceof Arrayable) {
43+
$fieldDefinitions = $this->fields();
44+
} else {
45+
$vars = array_keys(\Yii::getObjectVars($this));
46+
$fieldDefinitions = array_combine($vars, $vars);
47+
}
4448

45-
foreach ($this->resolveFields($this->fields(), $fields) as $name => $definition) {
49+
foreach ($this->resolveFields($fieldDefinitions, $fields) as $name => $definition) {
4650
$attributes[$name] = is_string($definition) ? $this->$definition : call_user_func($definition, $this, $name);
4751
}
4852
return $attributes;
@@ -54,8 +58,12 @@ public function getResourceAttributes(array $fields = [])
5458
public function getResourceRelationships()
5559
{
5660
$relationships = [];
61+
$fields = [];
62+
if ($this instanceof Arrayable) {
63+
$fields = $this->extraFields();
64+
}
5765

58-
foreach ($this->resolveFields($this->extraFields()) as $name => $definition) {
66+
foreach ($this->resolveFields($fields) as $name => $definition) {
5967
$relationships[$name] = is_string($definition) ? $this->$definition : call_user_func($definition, $this, $name);
6068
}
6169
return $relationships;
@@ -77,23 +85,6 @@ public function setResourceRelationship($name, $relationship)
7785
}
7886
}
7987

80-
/**
81-
* @return array
82-
*/
83-
public function fields()
84-
{
85-
$fields = array_keys(\Yii::getObjectVars($this));
86-
return array_combine($fields, $fields);
87-
}
88-
89-
/**
90-
* @return array
91-
*/
92-
public function extraFields()
93-
{
94-
return [];
95-
}
96-
9788
/**
9889
* @param array $fields
9990
* @param array $fieldSet

tests/SerializerTest.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,16 @@ public function dataProviderSerializeDataProvider()
138138
{
139139
$bob = new ResourceModel();
140140
$bob->username = 'Bob';
141-
$expectedBob = ['id' => '123', 'type' => 'resource-models', 'attributes' => ['username' => 'Bob']];
141+
$bob->extraField1 = new ResourceModel();
142+
$expectedBob = ['id' => '123', 'type' => 'resource-models',
143+
'attributes' => ['username' => 'Bob'],
144+
'relationships' => ['extraField1' => ['data' => ['id' => '123', 'type' => 'resource-models']]]];
142145
$tom = new ResourceModel();
143146
$tom->username = 'Tom';
144-
$expectedTom = ['id' => '123', 'type' => 'resource-models', 'attributes' => ['username' => 'Tom']];
147+
$tom->extraField1 = new ResourceModel();
148+
$expectedTom = ['id' => '123', 'type' => 'resource-models',
149+
'attributes' => ['username' => 'Tom'],
150+
'relationships' => ['extraField1' => ['data' => ['id' => '123', 'type' => 'resource-models']]]];
145151
return [
146152
[
147153
new ArrayDataProvider([
@@ -253,6 +259,7 @@ public function dataProviderSerializeDataProvider()
253259
public function testSerializeDataProvider($dataProvider, $expectedResult)
254260
{
255261
$serializer = new Serializer();
262+
ResourceModel::$extraFields = ['extraField1'];
256263
ResourceModel::$fields = ['username'];
257264
$this->assertEquals($expectedResult, $serializer->serialize($dataProvider));
258265
}

0 commit comments

Comments
 (0)