Zizaco / entrust

Role-based Permissions for Laravel 5
MIT License
6.05k stars 1.29k forks source link

laravel 5.4 Call to undefined method Builder::restore() #792

Open sriramgk opened 7 years ago

sriramgk commented 7 years ago

If I add the use EntrustUserTrait; in User.php model file, I am getting undefined method Builder::restore(). I am not sure where the problem is.

This is my error log.

[2017-05-24 18:58:37] local.ERROR: BadMethodCallException: Call to undefined method Illuminate\Database\Query\Builder::restore() in /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:2451
Stack trace:
#0 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(1250): Illuminate\Database\Query\Builder->__call('restore', Array)
#1 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1341): Illuminate\Database\Eloquent\Builder->__call('restore', Array)
#2 /var/www/html/blog/vendor/zizaco/entrust/src/Entrust/Traits/EntrustUserTrait.php(46): Illuminate\Database\Eloquent\Model->__call('restore', Array)
#3 [internal function]: App\User->restore()
#4 /var/www/html/blog/vendor/nilportugues/serializer-eloquent/src/Helper/RelationshipPropertyExtractor.php(88): ReflectionMethod->invoke(Object(App\User))
#5 /var/www/html/blog/vendor/nilportugues/serializer-eloquent/src/Driver.php(101): NilPortugues\Serializer\Drivers\Eloquent\Helper\RelationshipPropertyExtractor::getRelationshipAsPropertyName(Object(App\User), 'App\\User', Object(ReflectionClass), Object(NilPortugues\Serializer\Drivers\Eloquent\Driver))
#6 /var/www/html/blog/vendor/nilportugues/serializer-eloquent/src/Driver.php(51): NilPortugues\Serializer\Drivers\Eloquent\Driver->serializeEloquentModel(Object(App\User))
#7 /var/www/html/blog/vendor/nilportugues/serializer-eloquent/src/Driver.php(30): NilPortugues\Serializer\Drivers\Eloquent\Driver->serializeObject(Object(App\User))
#8 /var/www/html/blog/vendor/nilportugues/serializer-eloquent/src/EloquentDriver.php(34): NilPortugues\Serializer\Drivers\Eloquent\Driver->serialize(Object(App\User))
#9 /var/www/html/blog/vendor/nilportugues/laravel5-json-api/src/NilPortugues/Laravel5/JsonApi/JsonApiSerializer.php(30): NilPortugues\Serializer\Drivers\Eloquent\EloquentDriver::serialize(Object(App\User))
#10 /var/www/html/blog/vendor/nilportugues/serializer/src/Serializer.php(136): NilPortugues\Laravel5\JsonApi\JsonApiSerializer->serializeObject(Object(App\User))
#11 /var/www/html/blog/vendor/nilportugues/serializer/src/Serializer.php(105): NilPortugues\Serializer\Serializer->serializeData(Object(App\User))
#12 /var/www/html/blog/vendor/nilportugues/json-api/src/JsonApiSerializer.php(60): NilPortugues\Serializer\Serializer->serialize(Object(App\User))
#13 /var/www/html/blog/vendor/nilportugues/json-api/src/Server/Actions/GetResource.php(90): NilPortugues\Api\JsonApi\JsonApiSerializer->serialize(Object(App\User), Object(NilPortugues\Api\JsonApi\Http\Request\Parameters\Fields), Object(NilPortugues\Api\JsonApi\Http\Request\Parameters\Included))
#14 /var/www/html/blog/vendor/nilportugues/laravel5-json-api/src/NilPortugues/Laravel5/JsonApi/Controller/JsonApiController.php(80): NilPortugues\Api\JsonApi\Server\Actions\GetResource->get('1', 'App\\User', Object(Closure))
#15 [internal function]: NilPortugues\Laravel5\JsonApi\Controller\JsonApiController->show('1')
#16 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(55): call_user_func_array(Array, Array)
#17 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(44): Illuminate\Routing\Controller->callAction('show', Array)
#18 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Routing/Route.php(203): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(App\Http\Controllers\UserController), 'show')
#19 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Routing/Route.php(160): Illuminate\Routing\Route->runController()
#20 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Routing/Router.php(559): Illuminate\Routing\Route->run()
#21 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Dingo\Api\Http\Request))
#22 /var/www/html/blog/vendor/dingo/api/src/Http/Middleware/Auth.php(55): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Dingo\Api\Http\Request))
#23 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Dingo\Api\Http\Middleware\Auth->handle(Object(Dingo\Api\Http\Request), Object(Closure))
#24 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
#25 /var/www/html/blog/vendor/dingo/api/src/Http/Middleware/PrepareController.php(45): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Dingo\Api\Http\Request))
#26 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Dingo\Api\Http\Middleware\PrepareController->handle(Object(Dingo\Api\Http\Request), Object(Closure))
#27 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
#28 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Dingo\Api\Http\Request))
#29 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Routing/Router.php(561): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#30 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Routing/Router.php(520): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Dingo\Api\Http\Request))
#31 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Routing/Router.php(498): Illuminate\Routing\Router->dispatchToRoute(Object(Dingo\Api\Http\Request))
#32 /var/www/html/blog/vendor/dingo/api/src/Routing/Adapter/Laravel.php(81): Illuminate\Routing\Router->dispatch(Object(Dingo\Api\Http\Request))
#33 /var/www/html/blog/vendor/dingo/api/src/Routing/Router.php(513): Dingo\Api\Routing\Adapter\Laravel->dispatch(Object(Dingo\Api\Http\Request), 'v1')
#34 /var/www/html/blog/vendor/dingo/api/src/Http/Middleware/Request.php(126): Dingo\Api\Routing\Router->dispatch(Object(Dingo\Api\Http\Request))
#35 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(114): Dingo\Api\Http\Middleware\Request->Dingo\Api\Http\Middleware\{closure}(Object(Dingo\Api\Http\Request))
#36 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(30): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
#37 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Dingo\Api\Http\Request), Object(Closure))
#38 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(30): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
#39 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Dingo\Api\Http\Request), Object(Closure))
#40 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
#41 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Dingo\Api\Http\Request), Object(Closure))
#42 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(46): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
#43 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Dingo\Api\Http\Request), Object(Closure))
#44 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
#45 /var/www/html/blog/vendor/dingo/api/src/Http/Middleware/Request.php(127): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#46 /var/www/html/blog/vendor/dingo/api/src/Http/Middleware/Request.php(103): Dingo\Api\Http\Middleware\Request->sendRequestThroughRouter(Object(Dingo\Api\Http\Request))
#47 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Dingo\Api\Http\Middleware\Request->handle(Object(Dingo\Api\Http\Request), Object(Closure))
#48 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#49 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#50 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(149): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#51 /var/www/html/blog/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#52 /var/www/html/blog/public/index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#53 /var/www/html/blog/server.php(21): require_once('/var/www/html/Z...')
#54 {main} 

My User model file:

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Zizaco\Entrust\Traits\EntrustUserTrait;

class User extends Authenticatable
{
    //use Notifiable;
    use EntrustUserTrait;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
}
thierry2015 commented 7 years ago

You need to add SoftDeletes Eloquent trait and add a TIMESTAMP "deleted_at" ($table->softDelete()) row to your users table