No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

16 Días
19 Hrs
57 Min
25 Seg
Curso de Introducción a Laravel 6

Curso de Introducción a Laravel 6

Profesor Italo Morales F

Profesor Italo Morales F

Creación de tablas, entidades y datos de prueba

18/37
Recursos

Aportes 40

Preguntas 10

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Si a este curso lo hacen con Laravel 8 se pueden volver un poco locos. Siguiendo la documentación oficial y rascandome un poco la cabeza logre hacerlo fucnionar.
PostFactory:

<?php

namespace Database\Factories;

use App\Models\Post;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

class PostFactory extends Factory
{
    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = Post::class;

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'user_id'   => 1,
            'title'     => $this->faker->sentence,
            'body'      => $this->faker->text(800),
        ];
    }
}

Para databaseseeder:

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
use App\Models\User;
use App\Models\Post;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        User::create([
            'name' => 'Italo Morales F',
            'email' => '[email protected]',
            'password' => bcrypt('123456')
        ]);

        Post::factory()->count(24)->create();
    }

}

Sutiles cambios, saludos y suerte

RESUMEN

Creacion de Tablas Entidades y Datos de Prueba

2 Crearemos la configuracion para trabajar con datos primero 
A) Migration
B)Factory
C)seed

A) _create_posts_table.php

public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->bigIncrements("id"); //Define el campo Id

            $table->bigInteger("user_id")->unsigned();//inicializa FK

            $table->string("title");	
            $table->string("slug")->unique();//no hay 2 slugs iguales

            $table->string("image")}->nullable();//puede haber img o no
            
            $table->text("body");
            $table->text("iframe")->nullable(); //puede haber video o no


            $table->timestamps();

            $table->foreign("user_id")->references("id")->on("users")
//RELATION: //TABLA	     FK//En fk mira su campo id//en tabla users	
        });
    }
//////////////////////////////////////////////////////////////////////////

B)FACTORY crear el molde para los datos de prueba

$factory->define(Post::class, function (Faker $faker) {
    return [
        "user_id"   => 1,
        "title"     => $faker->sentence ,
        "body"      => $faker->text(800) ,

    ];
});
//////////////////////////////////////////////////////////////////////////
C) Seeder

class DatabaseSeeder extends Seeder
{

    public function run()
    {

	//creamos 1 user para probar el sistema
       App\User::create([
           "name"=>"Tomas Goldenberg",
           "email"=>"[email protected]",
           "password"=>bcrypt("123456")
        ]);


	//usamos el factory para crear 24 posts
        factory(App\Post::class, 24)->create();
        
    }

}

3 CONFIGURAR LA BASE DE DATOS
//crear la base de datos blog en tu cliente visual
.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=



4 TERMINAL
sudo php artisan migrate:fresh --seed


TABLAS  CREADAS Y RELLENADAS

En Laravel 8, si les aparece el error:
BadMethodCallException Call to undefined method App\Models\Post::Factory()
Deben incluir en la carpeta Models en el Post.php despues de:
Use Slugabble;
La siguiente linea:
use HasFactory;
y volver a corrrer el comando:
php artisan migrate:refresh --seed

Al momento de ejecutar las migraciones con: php artisan migrate:refresh --seed, me muestra el siguiente error, me genera las migraciones pero al parecer el problema esta con el factory espero alguien pueda ayudarme a solucionar el problema Gracias…

Comparto mi código del **factory ** y del **seeder ** realizado en la versión de Laravel 8

PostFactory.php

<?php

namespace Database\Factories;

use App\Models\Post;
use Illuminate\Database\Eloquent\Factories\Factory;

class PostFactory extends Factory
{   
    protected $model = Post::class;
   
    public function definition()
    {
        return [
            'user_id' => 1,
            'title' => $this->faker->sentence,
            'body' => $this->faker->sentence(800)
        ];
    }
}

DatabaseSeeder.php

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{   
    public function run()
    {
        // \App\Models\User::factory(10)->create();
        \App\Models\User::create([
            'name' => 'Jhon Fabio Cardona',
            'email' => '[email protected]',
            'password' => bcrypt('12345678')
        ]);

        \App\Models\Post::factory(24)->create();
    }
}

Finalmente en la consola ejecutamos

php artisan migrate:refresh --seed

Solución para los que tengan problema con la columna slug. Yo usé Laravel 8.5.24. Leí la documentación del paquete cviebrock/eloquent-sluggable.

El archivo de migración en la sentencia para definir la columna slug debe ir así:

$table->string('slug')->unique()->nullable();

En el archivo app/Models/Post.php, se debe agregar lo siguiente, la clase sluggable y una función:

namespace App\Models;

use Cviebrock\EloquentSluggable\Sluggable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    use HasFactory;
    use Sluggable;

    public function sluggable(): array
    {
        return [
            'slug' => [
                'source' => 'title'
            ]
        ];
    }
} 

y finalizamos ejecutando el comando migrate:refresh --seed:

php artisan migrate:refresh --seed 

En la base de datos nos debe poner el la columna ‘slug’ lo mismo que en la columna ‘title’ pero ya en minusculas y con guiones para separar palabras.

Creación de tablas, entidades y datos de prueba

  1. Configuración de la migración de La tabla Post
public function up()
    {
        Schema::create('posts', function (Blueprint $table) {

            $table->bigIncrements('id');

            // Creación de la llave foranea de usuarios
            $table->unsignedBigInteger('user_id');

            $table->string('title');
            $table->string('slug')->unique();
            $table->string('image')->nullable();
            $table->text('body');
            $table->text('iframe')->nullable();

            // Crea las columnas de marca de tiempo en laravel created_at y updated_at
            $table->timestamps();

            // creación de relación entre la tabla post y usuarios
            $table->foreign('user_id')
                  ->references('id')
                  ->on('users');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
  1. Configuración de Factory de Post
<?php

/** @var \Illuminate\Database\Eloquent\Factory $factory */

use App\Post;
use Faker\Generator as Faker;

$factory->define(Post::class, function (Faker $faker) {
    return [
        /* 
            El factory debe tener una estrecha relación con la tabla
            Faker es un generador de datos de pruba muy util a la hora de testear la app
        */
        
        'user_id' => 1,
        'title' => $faker->sentence,
        'body' => $faker->text(800)
    ];
});
  1. Creación de los datos semilla de mi aplicación para realizar pruebas
public function run()
    {
        /* 
            Creación de un usuario para realizar pruebas.

            Utilizo eloquent directamente debido a que si
            si lo creo medinate factory se crearia un usuario
            aleatorio y no podria probar el sistema ya que no
            sabria el usuario ni la contraseña.
        */

        App\User::create([
            'name' => 'Javier Amaya Patricio',
            'email' => '[email protected]',
            'password' => bcrypt('123456')
        ]);

        /* 
            Creación de 24 posts mediante factory
        */

        factory(Post::class,24)->create();
    }
  1. configuración de la Conexión a la base de datos en el archivo .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=**platzipress**
DB_USERNAME=root
DB_PASSWORD=

  1. Revisión de la conexión a la base de datos usando Tinker antes de ejecutar cualquier migración.

Este Comando abre la consola de tinker la cual nos permite realizar pruebas de funcionamiento

php artisan tinker.

Este comando permite revisar el estado de la conexión con la base de datos, sino hay ningún error nos muestra información de la conexión de lo contrario nos manda una mensaje de error.

DB::connection()->getPdo();
  1. Una vez comprobado que la conexión con la base de datos es correcta, podemos ejecutar las migraciones para poder crear los datos de prueba, para ello corremos el comando:
php artisan migrate:refresh --seed

  1. Resultado de la tabla usuarios:
  1. Resultado de la tabla post:

Excelente, yo manejaré la base de datos con el nombre de “blog” que me parece un nombre más lógico para el proyecto:D

Este curso me encanta, 100% el mejor curso de php en todo platzi sin lugar a duda ❤️

En el factory tuve que realizar unos cambios ya que no me ejecutaba las migracioens con laravel 8:

En el Post:

return [
            'user_id'   => 1,
            'title'     => $this->faker->sentence,
            'body'     => $this->faker->text(800),
        ];

y en el Seeders tuve que usar asi:

\App\Models\Post::factory(24)->create();

Comentarles que lo estoy usando con laravel SAIL con docker

Hola , creo que estaría bien pequeñas “píldoras” con los cambios de versión.
No cambia todo y sería útil un video corto con por ejemplo en este caso los Factories en laravel 8, teniendo ya la base de esta clase.
O el cambio y uso para crear el proyecto con auth y sus nuevas plantillas etc…

Buenas me sigue generando el mismo problema, de que cuando ejecuto el comando refresh con el seed no me genera la tabla posts ni me llena las otras tablas. en las otras practicas tuve que crear los datos manuelmente para poder hacer las practicas.

esto es lo que se ejecuta en mi terminal cuando ejecuto el comando.
cabe destacar que estoy usando git-bash como terminal para el curso y php/myadmin como base de datos, es el unico gestor que tengo.

si me pueden ayudar o sugerir algo antes de continuar, muchas gracias.

Casa@DESKTOP-MBM1C0S MINGW32 /c/xampp/htdocs/laravel/basic-new
$ php artisan migrate:refresh --seed
Migration table not found.
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table

   Illuminate\Database\QueryException

  SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too
long; max key length is 767 bytes (SQL: alter table `users` add unique `users_em
ail_unique`(`email`))

  at C:\xampp\htdocs\laravel\basic-new\vendor\laravel\framework\src\Illuminate\D
atabase\Connection.php:669
    665|         // If an exception occurs when attempting to run a query, we'll
 format the error
    666|         // message to include the bindings with SQL, which will make th
is exception a
    667|         // lot more helpful to the developer instead of just the databa
se's errors.
    668|         catch (Exception $e) {
  > 669|             throw new QueryException(
    670|                 $query, $this->prepareBindings($bindings), $e
    671|             );
    672|         }
    673|

  1   C:\xampp\htdocs\laravel\basic-new\vendor\laravel\framework\src\Illuminate\
Database\Connection.php:463
      PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1071 Sp
ecified key was too long; max key length is 767 bytes")

  2   C:\xampp\htdocs\laravel\basic-new\vendor\laravel\framework\src\Illuminate\
Database\Connection.php:463
      PDOStatement::execute()

alguien sabe como solucionar este error, me crea las tablas pero no me inserta los datos

C:\Users\Alvaro Restrepo\Documents\StudyLaravel\blog>php artisan migrate:refresh --seed
Rolling back: 2019_08_19_000000_create_failed_jobs_table
Rolled back:  2019_08_19_000000_create_failed_jobs_table (0.03 seconds)
Rolling back: 2014_10_12_100000_create_password_resets_table
Rolled back:  2014_10_12_100000_create_password_resets_table (0.01 seconds)
Rolling back: 2014_10_12_000000_create_users_table
Rolled back:  2014_10_12_000000_create_users_table (0.01 seconds)
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (0.03 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (0.02 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated:  2019_08_19_000000_create_failed_jobs_table (0.01 seconds)
Migrating: 2020_05_14_230214_create_posts_table

   Illuminate\Database\QueryException

  SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'posts' already exists (SQL: create table `posts` (`id` bigint unsigned not null auto_increment primary key, `user_id` bigint unsigned not null, `title` varchar(191) not null, `slug` varchar(191) not null, `image` varchar(191) null, `body` text not null, `iframe` text null, `created_at` timestamp null, `updated_at` timestamp null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')

  at C:\Users\Alvaro Restrepo\Documents\StudyLaravel\blog\vendor\laravel\framework\src\Illuminate\Database\Connection.php:671
    667|         // If an exception occurs when attempting to run a query, we'll format the error
    668|         // message to include the bindings with SQL, which will make this exception a
    669|         // lot more helpful to the developer instead of just the database's errors.
    670|         catch (Exception $e) {
  > 671|             throw new QueryException(
    672|                 $query, $this->prepareBindings($bindings), $e
    673|             );
    674|         }
    675|

  1   C:\Users\Alvaro Restrepo\Documents\StudyLaravel\blog\vendor\laravel\framework\src\Illuminate\Database\Connection.php:464
      PDOException::("SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'posts' already exists")

  2   C:\Users\Alvaro Restrepo\Documents\StudyLaravel\blog\vendor\laravel\framework\src\Illuminate\Database\Connection.php:464
      PDOStatement::execute()

cuando se ejecuta `php artisan migrate:refresh --seed` se obtiene este error: ```txt Symfony\Component\Debug\Exception\FatalThrowableError : syntax error, unexpected '|', expecting variable (T_VARIABLE) at /var/www/html/basic-new/vendor/cocur/slugify/src/Slugify.php:100 96| * @param string|array|null $options Options 97| * 98| * @return string Slugified version of the string 99| */ > 100| public function slugify(string $string, array|string|null $options = null): string 101| { 102| // BC: the second argument used to be the separator 103| if (is_string($options)) { 104| $separator = $options; Exception trace: 1 Composer\Autoload\{closure}("/var/www/html/basic-new/vendor/composer/../cocur/slugify/src/Slugify.php") /var/www/html/basic-new/vendor/composer/ClassLoader.php:427 2 Composer\Autoload\ClassLoader::loadClass("Cocur\Slugify\Slugify") [internal]:0 Please use the argument -v to see more details. ``` ```js ... ``` El problema es la versión de `` `cocur/slugify` ``, la cual es una dependencia de `` `cviebrock/eloquent-sluggable` `` Instala específicamente esta versión: `` `composer require cviebrock/eloquent-sluggable:6.0.2` `` Lo anterior aplica si haces el curso específicamente con Laravel 6. Saludos
cuando se ejecuta `php artisan migrate:refresh --seed` se obtiene este error: ```txt Symfony\Component\Debug\Exception\FatalThrowableError : syntax error, unexpected '|', expecting variable (T_VARIABLE) at /var/www/html/basic-new/vendor/cocur/slugify/src/Slugify.php:100 96| * @param string|array|null $options Options 97| * 98| * @return string Slugified version of the string 99| */ > 100| public function slugify(string $string, array|string|null $options = null): string 101| { 102| // BC: the second argument used to be the separator 103| if (is_string($options)) { 104| $separator = $options; Exception trace: 1 Composer\Autoload\{closure}("/var/www/html/basic-new/vendor/composer/../cocur/slugify/src/Slugify.php") /var/www/html/basic-new/vendor/composer/ClassLoader.php:427 2 Composer\Autoload\ClassLoader::loadClass("Cocur\Slugify\Slugify") [internal]:0 Please use the argument -v to see more details. ``` El problema es la versión de `` `cocur/slugify` ``, la cual es una dependencia de `` `cviebrock/eloquent-sluggable` `` Instala específicamente esta versión: `` `composer require cviebrock/eloquent-sluggable:6.0.2` `` Lo anterior aplica si haces el curso específicamente con Laravel 6. Saludos...

Comparto otra version del factory para el ejercicio.
.
Como aporte:

  • genero primero la sentencia fake y sobre ella aplico la funcion slug.
  • genero user_id de forma aleatoria a partir de la tabla de usuarios (poblada previamente)
  • en las fechas de actualizacion y borrado uso random porque unos campos tienen fechas otros no.
public function definition()
	{
		$title = $this->faker->sentence;
		$slug = Str::of($title)->slug('-');
		$image = "https://loremflickr.com/640/360";

		return [
			// 'user_id' => $this->faker->numberBetween($min = 20, $max = 29),
			'user_id' => User::all()->random()->id,
			'title' => $title,
			'slug' => $slug,
			'image' => $image,
			// 'body' => $faker->text(800),
			'body' => $this->faker->paragraph($nbSentences = 3, $variableNbSentences = true),
			'created_at' => $this->faker->dateTime(),
			'updated_at' => $this->faker->randomElement([
				$this->faker->dateTime(), null
			]),
			'deleted_at' => $this->faker->randomElement([
				$this->faker->dateTime(), null
			]),
		];
	}

Para el siguiente error:

Exception trace:

 1   PDOException::("SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'posts' already exists")
  • solución:

Paso 1
php artisan migrate:reset

Paso 2

Vaya a su base de datos usando PHPmyadmin (o similar) y elimine todas las tablas restantes, incluida la tabla de migración.

Paso 3
php artisan migrate

Laravel 7 works command

      composer require cviebrock/eloquent-sluggable 7.00 

General error: 1364 Field ‘slug’ doesn’t have a default value")
Los que tengan ese error pueden solucionarlo colocando en el PostFactory:
public function definition()
{
$title = $this->faker->sentence();
return [
‘user_id’=>1,
‘title’=>$title,
‘slug’=>Str::slug($title,’-’),
‘body’=>$this->faker->text(800)
];
}

Este error me general por el campo slug no me permite ingresar datos. Asi que tuve que agregar la funcion de nullable. Espero ayude alguien que tenga el mismo error.

Para los campos que son llaves foraneas también pueden usar la siguiente propiedad para que sea mas legible y rápido de hacer:

$table->foreignId('user_id');

Esta propiedad de arriba es un shortcut para no tener que todo escribir esto:

$table->unsignedBigInteger('user_id')

Si desean conocer más a fondo sobre las propiedades que nos provee laravel a la hora de crear campos de base de datos les dejo el siguiente enlace aquí 😄

Les recomiendo que si estan en laravel 8 creen mejor un proyecto en laravel 7, puede que se confundan y les de la impresion de que laravel es complicado cuando realmente es una maravilla.
Después de este curso tomen laravel 8, verán muy buenas mejoras en el framework.

#NuncaParesDeAprender

la creacion de la tabla de posts quedaria asi:

public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->bigIncrements('id')->unsigned();
            $table->unsignedBigInteger('user_id');

            $table->string('title');
            $table->string('slug')->unique();

            $table->string('image')->nullable();

            $table->text('body');
            $table->text('iframe')->nullable();

            $table->timestamps();

            $table->foreign('user_id')->references('id')->on('users');
        });
    }

para los que tuvieron este error:
Method foreing does not exist.
hay un pequeño error en la linea
Agreguen esta linea en create post
$table->foreign(‘user_id’)->references(‘id’)->on(‘users’);
la solucion está en cambiar el foreing por foreign

Excelente explicación para crear un proyecto de 0

El método unsignedBigInteer en la creación de campos sirve para determinar que el campo que se creara no tendrá números negativos y será un numero grande

Alguien me puede decir, que es lo que establece la función unsigned()?

¿Cómo se puede agregar una llave foránea como alteración y no en el momento de la creación de la tabla?

no recuerdo que en clases pasadas del curso hayan hecho mención a esto, pero en caso hayan notado alguna discrepancia en la hora de creación / actualización de los registros en la BD, pueden hacer el ajuste correspondiente en la llave timezone del archivo config/app.php del Laravel. Para la lista de zonas horarias admitidas pueden ver el siguiente enlace: https://www.php.net/manual/en/timezones.php

Excelente clase, se explico como crear las tablas, preparar el factory y por último los datos semilla de las tablas.

Amigos les comparto el enlace donde encuentran todos los tipos de columnas para una migración en laravel Migration Columns

Coool !

una forma de crear un usuario en seed es:

$user = new User();
        $user->name = 'jose Luis';
        $user->email = '[email protected]';
        $user->password = bcrypt('123456789');

        $user->save();

Ya resolví el problema, me faltaba agregar:
use Sluggable en el modelo de Post

Excelente curso, es la primera vez que pruebo laravel y me está gustando. El único problema es que a la hora de realizar la migración me genera un error indicando que tanto el campo slug como el campo body no tienen un valor por defecto. La primera solución que pensé fué poner esos campos como nulos pero el problema es que el slug ya no coincide con el titulo (que es finalmente lo que se busca)

me daba un error con el sluggable
por lo que le agregue en el modelo de post
public function sluggable(): array
{
return [
‘slug’ => [
‘source’ => ‘title’,
‘onUpdate’=> true
]
];
}
y ya no me salio el error

Para el error que dice que la columna user_id está duplicada en la tabla post hice esto:
Eliminé la bd, la creé de nuevo y dejé migratios de posts así

        Schema::create('posts', function (Blueprint $table) {
            $table->id();

            //$table->unsignedBigInteger('user_id');
            
            $table->string('title');
            $table->string('slug')->unique();

            $table->string('image')->nullable();

            $table->text('body');
            $table->text('iframe')->nullable();

            $table->timestamps();

            $table->foreignId('user_id');
        });
            'titulo'=>  $faker->text(10),
            'contenido' => $faker->text(70),
            'user_id' => factory(App\User::class),

‘user_id’ => factory(App\User::class) para Obtener el Id de los usuarios ya registrados

si que me dió problema esto por las versiones de Laravel respecto a la creación de los datos para la base y el slug… revisando los comentarios y la pagina de laravel por fin resulto la creación de los datos y resolver lo de los datos raiz…lo siguiente pueden probar en su proyecto.

<h3>DataBaseSeeder.php</h3>

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

use Illuminate\Support\Facades\DB;//aumentamos
use Illuminate\Support\Facades\Hash;//aumentamos
use Illuminate\Support\Str;//aumentamos
use App\Models\User;//aumentamos
use App\Models\Post;//aumentamos

class DatabaseSeeder extends Seeder
{
/**
* Seed the application’s database.
*
* @return void
*/
public function run()
{
User::create([
‘name’ => ‘Italo Morales F’,
‘email’ => ‘[email protected]’,
‘password’ => bcrypt(‘123456’)
]);

    Post::factory()->count(24)->create();
}

}
y en el archivo PostFactory.php

<?php

namespace Database\Factories;

use App\Models\Post;
use Illuminate\Database\Eloquent\Factories\Factory;

use Illuminate\Support\Str; //aumentamos

class PostFactory extends Factory
{
/**
* The name of the factory’s corresponding model.
*
* @var string
*/
protected $model = Post::class;

/**
 * Define the model's default state.
 *
 * @return array
 */
public function definition()
{
    return [
        'user_id'   => 1,
        'title'     => $this->faker->sentence,
        'body'      => $this->faker->text(800),
    ];
}

}

Archivo Post.php del slug
<?php

namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Cviebrock\EloquentSluggable\Sluggable;
class Post extends Model
{
use HasFactory;

 use Sluggable;
/**
* Return the sluggable configuration array for this model.
*
* @return array
*/
public function sluggable()
{
    return [
        'slug' => [
            'source' => 'title',
            'onUpdate'=> true 
        ]
    ];
}

}
espero les sirva…

Si les sale un error, al crear los Posts, con los factory, es que este atributo, ‘body’ => $faker->text(80), debe ser de un tamaño mas corto.