Skip to content

Commit 5ba985e

Browse files
authored
Merge pull request #7 from huntie/relationship-fixes
Fixes to fetching/updating relationships and triggering model events
2 parents 57fc7e1 + d0d655a commit 5ba985e

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

src/Http/Controllers/JsonApiController.php

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,8 @@ public function showAction(Request $request, $record)
119119
public function updateAction(Request $request, $record)
120120
{
121121
$record = $record instanceof Model ? $record : $this->findModelInstance($record);
122-
$record->update((array) $request->input('data.attributes'));
122+
$record->fill((array) $request->input('data.attributes'));
123+
$record->save();
123124

124125
if ($relationships = $request->input('data.relationships')) {
125126
$this->updateRecordRelationships($record, (array) $relationships);
@@ -171,20 +172,21 @@ public function relationshipAction(Request $request, $record, $relation)
171172
* @param Request $request
172173
* @param Model|int $record
173174
* @param string $relation
174-
* @param string|null $foreignKey
175175
*
176176
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
177177
*
178178
* @return JsonApiResponse
179179
*/
180-
public function updateToOneRelationshipAction(Request $request, $record, $relation, $foreignKey = null)
180+
public function updateToOneRelationshipAction(Request $request, $record, $relation)
181181
{
182182
abort_if(!array_key_exists($relation, $this->getModelRelationships()), Response::HTTP_NOT_FOUND);
183183

184184
$record = $record instanceof Model ? $record : $this->findModelInstance($record);
185+
$relation = $this->getModelRelationships()[$relation];
185186
$data = (array) $request->input('data');
186187

187-
$record->update([($foreignKey ?: $relation . '_id') => $data['id']]);
188+
$record->{$relation->getForeignKey()} = $data['id'];
189+
$record->save();
188190

189191
return new JsonApiResponse();
190192
}
@@ -335,7 +337,8 @@ protected function updateRecordRelationships($record, array $relationships)
335337
$data = $relationship['data'];
336338

337339
if ($relation instanceof BelongsTo) {
338-
$record->update([$relation->getForeignKey() => $data['id']]);
340+
$record->{$relation->getForeignKey()} = $data['id'];
341+
$record->save();
339342
} else if ($relation instanceof BelongsToMany) {
340343
$record->{$name}()->sync(array_pluck($data, 'id'));
341344
}

src/Support/JsonApiTransforms.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,8 @@ trait JsonApiTransforms
2323
protected function transformRecord($record, array $fields = [], array $include = [])
2424
{
2525
$relations = array_unique(array_merge($record->getRelations(), $include));
26-
$record = $record->load($relations);
27-
2826
$attributes = $record->toArray();
27+
$record = $record->load($relations);
2928
$relationships = [];
3029
$included = collect([]);
3130

0 commit comments

Comments
 (0)