Lỗi app comment khachhang must return a relationship instance năm 2024

More than 1 year has passed since last update.

App\Models\User::isAdmin must return a relationship instance. のエラーが出たので対処法を覚書。

エラーが出た時の実際のコード

app/Providers/AuthServiceProvider.php

    public function boot()
    {
        $this->registerPolicies();
        Gate::define('admin', function ($user) {
            return $user->isAdmin;
        });
    }

app/Models/User.php

    public function isAdmin()
    {
        return $this->role === self::ROLE_ADMIN;
    }

結論

app/Providers/AuthServiceProvider.php

    public function boot()
    {
        $this->registerPolicies();
        Gate::define('admin', function ($user) {
            return $user->isAdmin(); // ここの()がなかった
        });
    }

isAdminの() がないだけでした。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme

What you can do with signing up

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

Show hidden characters

//this is example how to return a relationship instance in laravel if u have some logic to get it or troubles public function user() { $id = ///some code to get $id return $this->hasOne(User::class, 'id', 'id') // this just for new hasOne instance ->orWhere('id', $id); //get your niddle instanse }

Yes, I only have one public function name() in App/Models/User I may made a mistake during the configuration ... I don't have an attribute name. I use "username"

Stacktrace :

`[2021-03-21 20:01:16] local.ERROR: App\Models\User::name must return a relationship instance. {"userId":26,"exception":"[object] (LogicException(code: 0): App\Models\User::name must return a relationship instance. at /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php:464) [stacktrace]

0 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php(441): Illuminate\Database\Eloquent\Model->getRelationshipFromMethod('name')

1 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php(396): Illuminate\Database\Eloquent\Model->getRelationValue('name')

2 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1785): Illuminate\Database\Eloquent\Model->getAttribute('name')

3 /Users/sylvain/Documents/dev/obpro/vendor/laravel/jetstream/src/HasProfilePhoto.php(69): Illuminate\Database\Eloquent\Model->__get('name')

4 /Users/sylvain/Documents/dev/obpro/vendor/laravel/jetstream/src/HasProfilePhoto.php(59): App\Models\User->defaultProfilePhotoUrl()

5 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php(494): App\Models\User->getProfilePhotoUrlAttribute(NULL)

6 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php(508): Illuminate\Database\Eloquent\Model->mutateAttribute('profile_photo_u...', NULL)

7 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php(162): Illuminate\Database\Eloquent\Model->mutateAttributeForArray('profile_photo_u...', NULL)

8 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1325): Illuminate\Database\Eloquent\Model->attributesToArray()

9 /Users/sylvain/Documents/dev/obpro/vendor/rtippin/messenger/src/Http/Resources/ProviderResource.php(77): Illuminate\Database\Eloquent\Model->toArray()

10 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Collections/helpers.php(184): RTippin\Messenger\Http\Resources\ProviderResource->RTippin\Messenger\Http\Resources\{closure}()

11 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Http/Resources/ConditionallyLoadsAttributes.php(105): value(Object(Closure))

12 /Users/sylvain/Documents/dev/obpro/vendor/rtippin/messenger/src/Http/Resources/ProviderResource.php(78): Illuminate\Http\Resources\Json\JsonResource->when(true, Object(Closure))

13 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Http/Resources/Json/JsonResource.php(95): RTippin\Messenger\Http\Resources\ProviderResource->toArray(Object(Illuminate\Http\Request))

14 /Users/sylvain/Documents/dev/obpro/vendor/rtippin/messenger/src/Http/Resources/ProviderStatusResource.php(51): Illuminate\Http\Resources\Json\JsonResource->resolve()

15 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Http/Resources/Json/JsonResource.php(95): RTippin\Messenger\Http\Resources\ProviderStatusResource->toArray(Object(Illuminate\Http\Request))

16 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Http/Resources/Json/ResourceResponse.php(39): Illuminate\Http\Resources\Json\JsonResource->resolve(Object(Illuminate\Http\Request))

17 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Http/Resources/Json/JsonResource.php(221): Illuminate\Http\Resources\Json\ResourceResponse->toResponse(Object(Illuminate\Http\Request))

18 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Routing/Router.php(750): Illuminate\Http\Resources\Json\JsonResource->toResponse(Object(Illuminate\Http\Request))

19 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Routing/Router.php(737): Illuminate\Routing\Router::toResponse(Object(Illuminate\Http\Request), Object(RTippin\Messenger\Http\Resources\ProviderStatusResource))

20 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Routing/Router.php(691): Illuminate\Routing\Router->prepareResponse(Object(Illuminate\Http\Request), Object(RTippin\Messenger\Http\Resources\ProviderStatusResource))

21 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))

22 /Users/sylvain/Documents/dev/obpro/vendor/rtippin/messenger/src/Http/Middleware/SetMessengerProvider.php(47): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

23 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): RTippin\Messenger\Http\Middleware\SetMessengerProvider->handle(Object(Illuminate\Http\Request), Object(Closure), 'required')

24 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

25 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))

26 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(127): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

27 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(103): Illuminate\Routing\Middleware\ThrottleRequests->handleRequest(Object(Illuminate\Http\Request), Object(Closure), Array)

28 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(55): Illuminate\Routing\Middleware\ThrottleRequests->handleRequestUsingNamedLimiter(Object(Illuminate\Http\Request), Object(Closure), 'messenger-api', Object(Closure))

29 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Routing\Middleware\ThrottleRequests->handle(Object(Illuminate\Http\Request), Object(Closure), 'messenger-api')

30 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php(44): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

31 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Auth\Middleware\Authenticate->handle(Object(Illuminate\Http\Request), Object(Closure))

32 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(77): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

33 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))

34 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

35 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))

36 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php(58): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

37 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Session\Middleware\AuthenticateSession->handle(Object(Illuminate\Http\Request), Object(Closure))

38 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

39 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(63): Illuminate\Session\Middleware\StartSession->handleStatefulRequest(Object(Illuminate\Http\Request), Object(Illuminate\Session\Store), Object(Closure))

40 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))

41 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

42 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))

43 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

44 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))

45 /Users/sylvain/Documents/dev/obpro/vendor/rtippin/messenger/src/Http/Middleware/MessengerApi.php(31): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

46 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): RTippin\Messenger\Http\Middleware\MessengerApi->handle(Object(Illuminate\Http\Request), Object(Closure))

47 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

48 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Routing/Router.php(693): Illuminate\Pipeline\Pipeline->then(Object(Closure))

49 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Routing/Router.php(668): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))

50 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Routing/Router.php(634): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))

51 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Routing/Router.php(623): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))

52 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(166): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))

53 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))

54 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

55 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))

56 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

57 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))

58 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

59 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))

60 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(87): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

61 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle(Object(Illuminate\Http\Request), Object(Closure))

62 /Users/sylvain/Documents/dev/obpro/vendor/fruitcake/laravel-cors/src/HandleCors.php(57): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

63 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fruitcake\Cors\HandleCors->handle(Object(Illuminate\Http\Request), Object(Closure))

64 /Users/sylvain/Documents/dev/obpro/vendor/fideloper/proxy/src/TrustProxies.php(57): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

65 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fideloper\Proxy\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))

66 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))

67 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(141): Illuminate\Pipeline\Pipeline->then(Object(Closure))

68 /Users/sylvain/Documents/dev/obpro/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(110): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))

69 /Users/sylvain/Documents/dev/obpro/public/index.php(52): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))

70 /Users/sylvain/Documents/dev/obpro/server.php(21): require_once('/Users/sylvain/...')

71 {main} "} `