SQLSTATE [42S02]: Базовая таблица или представление не найдено: 1146 Таблица «pk5.roles» не существует - PullRequest
0 голосов
/ 03 сентября 2018

Я могу вставить записи в employee_roles через тинкер, но не могу вставить их через код

Role.php

<?php

namespace App\Models\Admin\Employee;

use Illuminate\Database\Eloquent\Model;

class Role extends Model
{

    protected $table = 'employee_roles';

    public function permissions()
    {
        return $this->belongsToMany('App\Models\Admin\Employee\Permission', 'employee_permission_role', 'role_id', 'permission_id');
    }
}

RoleController.php

<?php

namespace App\Http\Controllers\Admin\Employee;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Employee\Employee;
use App\Models\Admin\Employee\Role;
use App\Models\Admin\Employee\Permission;

class RoleController extends Controller
{

    public function __construct()
    {
        $this->middleware('auth:admin');
    }

    public function index()
    {
        $roles = Role::all();
        return view('admins.employees.roles.role', compact('roles'));
    }

    public function create()
    {
      $permissions = Permission::all();
      return view('admins.employees.roles.create',compact('permissions'));
    }

    public function store(Request $request)
    {

      //dd($request);
        $this->validate($request, [
          'name' => 'required|unique:roles'
        ]);

        $role = new Role();
        $role->name = $request['name'];
        $role->save();
        $role->permissions()->sync($request->permission);

        return redirect(route('admin.employee.role.index'));
    }

admins.employees.roles.create.blade.php

@extends('layouts.admin')

@section('title', 'Role - Create')

@section('left-menu')

@endsection

@section('right-menu')

@endsection

@section('content')
  <h1>Add an Employee Role</h1>
  <br><br>
  @if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
  @endif
  <form action="{{ route('admin.employee.role.store') }}" method="post">
        @csrf

      <div class="form-group">
        <label for="name">Role Name</label>
        <input type="text" class="form-control" id="name" name="name" placeholder="Role Name" value="{{ old('name') }}">
      </div>

      <div class="form-row">
        <div class="col-md-4">
          <label for="name"><b>Customer Permissions</b></label>
            @foreach ($permissions as $permission)
              @if ($permission->for == 'Customer')
                <div class="checkbox">
                  <label><input type="checkbox" name="permission[]" value="{{ $permission->id }}">{{ $permission->name }}</label>
                </div>
              @endif
            @endforeach
        </div>

        <div class="col-md-4">
          <label for="name"><b>Despatch Permissions</b></label>
            @foreach ($permissions as $permission)
              @if ($permission->for == 'Despatch')
                <div class="checkbox">
                  <label><input type="checkbox" name="permission[]" value="{{ $permission->id }}">{{ $permission->name }}</label>
                </div>
              @endif
            @endforeach
        </div>
      </div>

    <div class="form-group">
      <button type="submit" class="btn btn-primary">Submit</button>
      <a href='{{ route('admin.employee.role.index') }}' class="btn btn-warning">Back</a>
    </div>

  </form>
@endsection

@section('pagescript')

@stop

1 Ответ

0 голосов
/ 03 сентября 2018
$this->validate($request, [
       'name' => 'required|unique:roles'
]);

Вы должны исправить имя таблицы как employee_roles

Поскольку у вас нет таблицы как roles, вы сказали, что в своей модели ролей вы используете employee_roles таблицу (protected $table = 'employee_roles';)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...