Skip to content

Commit 3faed04

Browse files
committed
Refactor methods in JsonApiController
1 parent 6d6dfbe commit 3faed04

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

src/Http/Controllers/JsonApiController.php

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,8 @@ public function updateAction(Request $request, $record)
123123
$record->fill((array) $request->input('data.attributes'));
124124
$record->save();
125125

126-
if ($relationships = $request->input('data.relationships')) {
127-
$this->updateRecordRelationships($record, (array) $relationships);
126+
if ($request->has('data.relationships')) {
127+
$this->updateRecordRelationships($record, (array) $request->input('data.relationships'));
128128
}
129129

130130
return new JsonApiResponse(new ResourceSerializer($record));
@@ -140,8 +140,7 @@ public function updateAction(Request $request, $record)
140140
*/
141141
public function destroyAction(Request $request, $record)
142142
{
143-
$record = $this->findModelInstance($record);
144-
$record->delete();
143+
$this->findModelInstance($record)->delete();
145144

146145
return new JsonApiResponse(null, Response::HTTP_NO_CONTENT);
147146
}
@@ -159,7 +158,7 @@ public function destroyAction(Request $request, $record)
159158
*/
160159
public function relationshipAction(Request $request, $record, $relation)
161160
{
162-
abort_if(!array_key_exists($relation, $this->getModelRelationships()), Response::HTTP_NOT_FOUND);
161+
abort_unless(array_key_exists($relation, $this->getModelRelationships()), Response::HTTP_NOT_FOUND);
163162

164163
$record = $this->findModelInstance($record);
165164

@@ -180,14 +179,15 @@ public function relationshipAction(Request $request, $record, $relation)
180179
*/
181180
public function updateToOneRelationshipAction(Request $request, $record, $relation)
182181
{
183-
abort_if(!array_key_exists($relation, $this->getModelRelationships()), Response::HTTP_NOT_FOUND);
182+
abort_unless(array_key_exists($relation, $this->getModelRelationships()), Response::HTTP_NOT_FOUND);
184183

185184
$record = $this->findModelInstance($record);
186185
$relation = $this->getModelRelationships()[$relation];
187-
$data = (array) $request->input('data');
188186

189-
$record->{$relation->getForeignKey()} = $data['id'];
190-
$record->save();
187+
if ($relatedRecord = $relation->getRelated()->find($request->input('data.id'))) {
188+
$record->associate($relatedRecord);
189+
$record->save();
190+
}
191191

192192
return new JsonApiResponse(new RelationshipSerializer($record, $relation));
193193
}
@@ -206,13 +206,12 @@ public function updateToOneRelationshipAction(Request $request, $record, $relati
206206
*/
207207
public function updateToManyRelationshipAction(Request $request, $record, $relation)
208208
{
209-
abort_if(!array_key_exists($relation, $this->getModelRelationships()), Response::HTTP_NOT_FOUND);
209+
abort_unless(array_key_exists($relation, $this->getModelRelationships()), Response::HTTP_NOT_FOUND);
210210

211211
$record = $this->findModelInstance($record);
212-
$relationships = (array) $request->input('data');
213212
$items = [];
214213

215-
foreach ($relationships as $item) {
214+
foreach ((array) $request->input('data') as $item) {
216215
if (isset($item['attributes'])) {
217216
$items[$item['id']] = $item['attributes'];
218217
} else {

0 commit comments

Comments
 (0)