Entender Laravel

1

隆Actualizamos este curso!

2

驴Qu茅 es Laravel?

3

Herramientas necesarias para trabajar con PHP y Laravel

4

Entendiendo el ciclo de vida de las solicitudes web

5

Qu茅 es un CRUD y c贸mo implementarlo

6

L贸gica de controladores y vistas con datos de prueba

7

Creando un formulario

Comprender los Fundamentos de Laravel

8

Sistema de rutas y controladores

9

Uso de Middlewares

10

Validaci贸n de datos (rutas, vistas, formularios y controladores)

11

Blade: sistema de plantillas avanzado

12

Trabajando con el componente Laravel/UI

Aprender sobre Eloquent ORM

13

Eloquent: trabajando con este ORM

14

Relaciones de tablas

15

Colecciones y serializaci贸n de datos

16

Formato de valores en tablas y presentaci贸n de datos

Crear PlatziPress

17

Proyecto Blog: presentaci贸n y configuraci贸n inicial

18

Creaci贸n de tablas, entidades y datos de prueba

19

Plantillas de trabajo y entendiendo el login

20

Dise帽o visual con Bootstrap

21

Vista index y botones de acci贸n

22

Implementaci贸n del formulario de creaci贸n

23

Implementaci贸n del guardado

24

Creando la funci贸n de editar un post

25

Actualizando nuestros posts

26

Integrando contenido audiovisual

Construir Proyecto Final: API con TDD (Intermedio)

27

Introducci贸n al testing

28

Metodolog铆a TDD y testing HTTP

29

Proyecto API con TDD: presentaci贸n y configuraci贸n inicial

30

Store con TDD

31

Refactorizaci贸n y validaci贸n en Store

32

Show con TDD

33

Update y validaci贸n con TDD

34

Delete con TDD

35

Index con TDD

36

Protecci贸n de una API con Login

37

Cierre del curso

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

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 39

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 la documentaci贸n de Laravel (https://laravel.com/docs/7.x/migrations#creating-columns) tambi茅n indica que se puede reemplazar el campo $table->unsignedBigInteger(鈥榰ser_id鈥) por $table->foreignId(鈥榰ser_id鈥), lo cu谩l me parece una opci贸n mucho m谩s corta, f谩cil de recordar y entendible.

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 鈥榮lug鈥 lo mismo que en la columna 鈥榯itle鈥 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 鈥渂log鈥 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 鈥減铆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()

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 鈥榮lug鈥 doesn鈥檛 have a default value")
Los que tengan ese error pueden solucionarlo colocando en el PostFactory:
public function definition()
{
$title = $this->faker->sentence();
return [
鈥榰ser_id鈥=>1,
鈥榯itle鈥=>$title,
鈥榮lug鈥=>Str::slug($title,鈥-鈥),
鈥榖ody鈥=>$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(鈥榰ser_id鈥)->references(鈥榠d鈥)->on(鈥榰sers鈥);
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 [
鈥榮lug鈥 => [
鈥榮ource鈥 => 鈥榯itle鈥,
鈥榦nUpdate鈥=> 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),

鈥榰ser_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鈥o 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鈥檚 database.
*
* @return void
*/
public function run()
{
User::create([
鈥榥ame鈥 => 鈥業talo Morales F鈥,
鈥榚mail鈥 => 鈥[email protected]鈥,
鈥榩assword鈥 => 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鈥檚 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, 鈥榖ody鈥 => $faker->text(80), debe ser de un tama帽o mas corto.