Crear modelo laravel
Para crear un modelo o model con laravel hay que utilizar una consola Power Shell, GitBash, etc.
En este caso abriendo el terminal de Visual Studio Code con Ctrl+ñ, y escribir el comando
php artisan make:model Nombremodelo
y así se crea el siguiente fichero:
app\Models\Nombremodelo.php
Parámetros para crear también otros ficheros como seeders factories o migrations
A la vez de crear el modelo es muy util crear los ficheros necesarios para implementar o desarrollar la aplicación web.
A través de las convenciones de Laravel se puede conseguir optimizar los recursos y productividad en el desarrollo de aplicaciones.
En este ejemplo se van a crear la migración (m), el factory (f) y el seeder (s).
php artisan make:model Nombremodelo -mfs
y así se crea los siguientes ficheros:
app\Models\Nombremodelo.php
database\factories\NombremodeloFactory.php
database\migrations\2021_08_26_225634_create_nombremodelo_table.php
database\seeders\NombremodeloSeeder.php
De forma breve indicar que es cada palabra mencionada:
- Migration: sirve para crear la base de datos dinámicamente a través de laravel eloquent. Aquí se define las tablas, campos y relaciones de la base de datos.
- Factory: sirve para crear datos falsos y aleatorios, para rellenar la base de datos. Se utiliza en el desarrollo para probar el funcionamiento de la aplicación web. La función faker genera el texto. Por ejemplo:
return [
'title' => $this->faker->sentence(),
'content' => $this->faker->text()
];
- Seeders: sirve para rellenar la base de datos con datos generados manualmente o bien con Factory.
Para ejecutar el relleno de datos, hay que indicar dentro del ficherodatabase\seeders\DatabaseSeeder.php
las sentencias a ejecutar. Por ejemplo, crear 100 registros:\App\Models\Nombremodelo::factory(100)->create();
Asignación masiva al modelo
Para poder guardar datos automáticamente, hay que definir en el modelo la asignación masiva, optando for dos formas:
- Guardar campos indicados con fillable
Los campos que se indican por parámentro se guardan y el resto los guarda con valores por defecto.protected $fillable = ['title', 'content'];
- Excluir los campos indicados con guarded
Al contrario que fillable, se guardan todos los campos excepto los indicados por parámetro que se guardan por defecto. Es como bloquear los campos indicados para que no se guarden con el modelo.protected $guarded = ['id', 'created_ad', 'updated_at', 'status'];
Tipos de datos frecuentes
Hay michos tipos de datos para asingar a las tablas, pero los principales son:
- Tipo String: Almacena texto hasta 255 caracteres
$table->string('title');
- Tipo sentence para una frase corta
$table->sentence('title');
Ejecutar migraciones y generación de datos falsos automáticamente
Para generar migraciones hay que ejecutar el comando migrate
php artisan migrate
Para generar migraciones eliminando y generando todos los campos de base de datos ejecutar el comando migrate:fress
php artisan migrate:fresh
Para generar migraciones hay que ejecutar regenerando y eliminando todos los datos base de datos, y además generar el contenido a través de los seeders, ejecutar el comando migrate:fress --seed
php artisan migrate:fresh --seed
Crear migraciones entre modelos
Para crear una talba de mucho a muchos, se crea una tabla intermedia, con lo que se puede crear la migración para relacionar dos modelos ya creados.
Por convención de laravel, se comienza la orden de comando por la palabra create
, seguido modelo1, seguido de modelo2, y finalizado de la palabra table
. Todos separados por guión bajo.
php artisan make:migration create_course_user_table
Dentro de la migración, se crean los campos con sus claves foráneas
$table->unsignedBigInteger('course_id');
$table->unsignedBigInteger('user_id');
$table->foreign('course_id')->references('id')->on('courses')->onDelete('cascade');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
Tablas polimorficas en laravel
Cuando se va a utilizar un modelo o tabla que contendrá varios tipos de otros modelos o tablas, se utilizan las relaciones polimorficas.
Puedes ver aquí como crear polimorfismo en Laravel.
Espero te sirva de ayuda!!
Deja una respuesta