Issues (115)

src/Controllers/CanUpdateResource.php (2 issues)

Labels
Severity
1
<?php
2
3
namespace VGirol\JsonApi\Controllers;
4
5
use Illuminate\Http\JsonResponse;
6
use Illuminate\Http\Request;
7
use Illuminate\Support\Facades\DB;
8
use VGirol\JsonApi\Resources\ResourceObject;
9
use VGirol\JsonApiConstant\Members;
10
11
trait CanUpdateResource
12
{
13
    /**
14
     * Undocumented function
15
     *
16
     * @param Request $request
17
     * @param string  $routeKey
18
     * @param mixed   $id
19
     *
20
     * @return JsonResponse
21
     */
22
    protected function updateAndReply(Request $request, string $routeKey, $id): JsonResponse
23
    {
24
        // Creates and validate specific FormRequest
25
        $request = $this->validateData($request);
0 ignored issues
show
It seems like validateData() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

25
        /** @scrutinizer ignore-call */ 
26
        $request = $this->validateData($request);
Loading history...
26
27
        // Updates resource
28
        $resource = DB::transaction(function () use ($request, $routeKey, $id) {
29
            return $this->updateSingle($request, $routeKey, $id);
30
        }, config('jsonapi.transactionAttempts'));
31
32
        // Fill response's content
33
        $content = $resource->getContent($request);
34
        $response = ($content === null) ? $this->responseService->noContent() : $this->responseService->ok($content);
35
36
        return $response;
37
    }
38
39
    /**
40
     * Update a single resource in database
41
     *
42
     * @param Request $request
43
     * @param int     $id
44
     *
45
     * @return ResourceObject
46
     */
47
    protected function updateSingle(Request $request, $routeKey, $id)
48
    {
49
        // Gets the data
50
        // $data = $request->validated(Members::DATA);
51
        $data = $request->input(Members::DATA);
0 ignored issues
show
The method input() does not exist on Illuminate\Http\Request. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

51
        /** @scrutinizer ignore-call */ 
52
        $data = $request->input(Members::DATA);

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
52
53
        // Update resource
54
        $model = $this->storeService->updateModel($data, $id, $routeKey);
55
56
        // Looks for relationships
57
        $this->relationshipService->updateAll($data, $model, true);
58
59
        // Get model for response (with required include or fields)
60
        $requiredModel = $this->fetchService->getRequiredModel($request, $id, $model);
61
62
        // Creates resource
63
        $resource = $this->exportService->exportSingleResource($requiredModel);
64
65
        return $resource;
66
    }
67
}
68