Search code examples
phplaravelentrust

How to fix Laravel BadMethodCallException when using Entrust


Always getting the

  [BadMethodCallException]
  This cache store does not support tagging.

when ever i try to run a database command that include the save function it produce this error and i think is because of the Entrust.

On the RegisterController it displays the same error of

  [BadMethodCallException]
  This cache store does not support tagging.

but it still registers the user. all the same but any other part of the code is halt. How do i fix this error.

<?php

namespace App\Http\Controllers\Auth;

use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;

class RegisterController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Register Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users as well as their
    | validation and creation. By default this controller uses a trait to
    | provide this functionality without requiring any additional code.
    |
    */

    use RegistersUsers;

    /**
     * Where to redirect users after registration.
     *
     * @var string
     */
    protected $redirectTo = '/home';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest');
    }

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|max:255',
            'email' => 'required|email|max:255|unique:users',
            'password' => 'required|min:6|confirmed',
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return User
     */
    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }
}

register controller code


Solution

  • To Correct this I went entirely out of Entrust Package and Create a fresh

    ROLE PERMISSION MODEL AND TABLE WITH THE SAME SCHEMA

    as entrust run the database migration with and use tinker to fill the datas.

    NEXT I EDITED THE MIDDLEWARE OF ENTRUST TO SEE MY ROLE, PERMISSION AS STRINGS

    after you create your model. Just to Zizaco\Entrust\Middleware\EntrustRole and just remove the explode function. to this for the other two middlewares