25. Crear un crud para los roles


3 comentarios

Inicia sesión para comentar

Comentarios:

  • Blanca Segura

    Blanca Segura hace 1 año

    Una ayuda … estoy en la última fase y tengo el error "ErrorException

    Array to string conversion"

    Justo después de agregar el “validate” en la función “store” …

    -------------------------------------------------

      public function store(Request $request)

    {

    $request->validate([

    'name' => 'required'

    ]);

     

    $role = Role::create($request->all());

    $role->permissions()->sync($request->permissions);

    return redirect()->route('admin.roles.edit', $role)->with('info', 'El rol se creó con éxito');

    -----------------------------------------

    • Victor Arana Flores hace 1 año

      El error te da cuando pones el validate? Qué raro, no encuentro ningun error en lo que me has pasado.

      Por capturas, para ver si encuentro el error. Capturas de tu codigo asi como del error, pero el error no solo el mensaje, sino tambien la descripcion del error.

  • Gabriel Griffin

    Gabriel Griffin hace 1 año

    Me da el siguiente error cuando le doy crear rol: “Array to string conversion”. 

    Que puedo hacer?

    • Gabriel Griffin hace 1 año

      public function store(Request $request)

      {

      $request->validate([

      'name' => 'required'

      ]);

       

      $role = Role::create($request->all());

       

      $role->permissions()->sync($request->permissions);

       

      return redirect()->route('admin.roles.edit', $role)->with('info', 'El rol se creó con éxito');

      }

    • Gabriel Griffin hace 1 año

      El store de RoleController te debe quedar así para que no te de el error: "Array to string conversion"

       

      public function store(Request $request)

      {

      $request->validate([

      'name' => 'required'

      ]);

       

      $role = Role::create($request->except('permissions'));

       

      $role->permissions()->sync($request->permissions);

       

      return redirect()->route('admin.roles.edit', $role)->with('info', 'El rol se creó con éxito');

      }

    • Victor Arana Flores hace 1 año

      Hola Gabriel, que bueno que llegaste a la solución. Hace mucho que grabe este curso y no recuerdo exactamente el código que escribí.

    • Blanca Segura hace 1 año

      Muchas Gracias … Ahora veo que el error se debe a que no se especifica el tipo de $request.

      No se modificó: $role = Role::create($request->all());

      Debió de haber sido:

      $role = Role::create($request->except('permissions'));

    • Victor Arana Flores hace 1 año

      No recuerdo bien como estructure el curso, pero puedo aportar con lo siguiente.

      El error que les está apareciendo puede deberse a la forma en la que han habilitado la asignación masiva.

       

      Cuando habilitan la asignación masiva con la propiedad $fillable; a la hora de crear un nuevo registro, Eloquent compara esa propiedad con los campos que le estás pasando, y solo considera aquellos campos definidos en dicha propiedad (me parece que yo use la propiedad fillable por eso no me da ningun error)

      Cuando utilizas la propiedad guarded, lo que hace eloquent, es eliminar del array que le pases, aquellos campos que coincidan con la propiedad guarded, y claro, no va eliminar los permisos y por tanto cuando intentes crear un nuevo rol, tambien tomara los permisos y por eso el error

      La solución sería la que propusiste, o en su defecto, cambiar el guarded por un fillable.

  • José Manuel Herrero

    José Manuel Herrero hace 2 años

    ERROR

    barce@LAPTOP-035KM4CA MINGW64 /c/xampp/htdocs/blog
    $ php artisan migrate:fresh --seed
    Dropped all tables successfully.
    Migration table created successfully.
    Migrating: 2014_10_12_000000_create_users_table
    Migrated:  2014_10_12_000000_create_users_table (60.21ms)
    Migrating: 2014_10_12_100000_create_password_resets_table
    Migrated:  2014_10_12_100000_create_password_resets_table (30.74ms)
    Migrating: 2014_10_12_200000_add_two_factor_columns_to_users_table
    Migrated:  2014_10_12_200000_add_two_factor_columns_to_users_table (8.64ms)
    Migrating: 2019_08_19_000000_create_failed_jobs_table
    Migrated:  2019_08_19_000000_create_failed_jobs_table (28.79ms)
    Migrating: 2019_12_14_000001_create_personal_access_tokens_table
    Migrated:  2019_12_14_000001_create_personal_access_tokens_table (41.79ms)
    Migrating: 2022_03_07_092353_create_sessions_table
    Migrated:  2022_03_07_092353_create_sessions_table (69.42ms)
    Migrating: 2022_03_07_094312_create_categories_table
    Migrated:  2022_03_07_094312_create_categories_table (12.83ms)
    Migrating: 2022_03_07_095012_create_posts_table
    Migrated:  2022_03_07_095012_create_posts_table (101.74ms)
    Migrating: 2022_03_07_101812_create_tags_table
    Migrated:  2022_03_07_101812_create_tags_table (13.87ms)
    Migrating: 2022_03_07_103218_create_post_tag_table
    Migrated:  2022_03_07_103218_create_post_tag_table (164.66ms)
    Migrating: 2022_03_07_123006_create_images_table
    Migrated:  2022_03_07_123006_create_images_table (16.86ms)
    Migrating: 2022_03_16_084749_create_permission_tables
    Migrated:  2022_03_16_084749_create_permission_tables (398.22ms)
    Seeding: Database\Seeders\RoleSeeder

      Illuminate\Database\QueryException

     SQLSTATE[42S22]: Column not found: 1054 Unknown column 'description' in 'field list' (SQL: insert into `permissions` (`guard_name`, `name`, `description`, `updated_a
    t`, `created_at`) values (web, admin.home, Ver el dashboard, 2022-03-17 21:20:44, 2022-03-17 21:20:44))

     at C:\xampp\htdocs\blog\vendor\laravel\framework\src\Illuminate\Database\Connection.php:716
       712▕         // If an exception occurs when attempting to run a query, we'll format the error
       713▕         // message to include the bindings with SQL, which will make this exception a
       714▕         // lot more helpful to the developer instead of just the database's errors.
       715▕         catch (Exception $e) {
     ➜ 716▕             throw new QueryException(
       717▕                 $query, $this->prepareBindings($bindings), $e
       718▕             );
       719▕         }
       720▕     }

     1   C:\xampp\htdocs\blog\vendor\laravel\framework\src\Illuminate\Database\Connection.php:495
         PDOException::("SQLSTATE[42S22]: Column not found: 1054 Unknown column 'description' in 'field list'")

     2   C:\xampp\htdocs\blog\vendor\laravel\framework\src\Illuminate\Database\Connection.php:495
         PDO::prepare("insert into `permissions` (`guard_name`, `name`, `description`, `updated_at`, `created_at`) values (?, ?, ?, ?, ?)")

    barce@LAPTOP-035KM4CA MINGW64 /c/xampp/htdocs/blog
    $
     

    • Blanca Segura hace 1 año

      Esto se debió seguramente (Pues a mi me pasó lo mismo) no guardar los cambios de las tablas antes de hacer la migración

    • Victor Arana Flores hace 1 año

      El error ahi indica que esta fallando la ejecución del seeder RoleSeeder, ya que está intentando almacenar un registro en la tabla description, y dicha tabla no esta definida.