martes, 8 de diciembre de 2020

Crud Simple en laravel 8

 Para este ejemplo, comenzaremos con la BD para ello. primero crearemos los modelos con el comando. 

php artisan make:model Gps --migration

El comando anterior crea el modelo (de la tabla 'gps') y su migracion (donde se crea las tablas y sus campos). Laravel 8 en automatico crea los archivos: database\migrations\[Fecha-Creacion]_create_gps_table.php y app\Models\Gps.php.

Para empezar comenzaremos a crear la estructura de la tabla 'Gps', en el archivo database\migrations\[Fecha-Creacion]_create_gps_table.php

=====================================

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateGpsTable extends Migration{
    public function up(){
        Schema::create('gps', function (Blueprint $table) {
            $table->id();
            $table->bigInteger('clienteid')->unsigned();
            $table->string('nombreunidad');
            $table->string('nrocel');
            $table->string('imei');
            $table->string('sn');
            $table->integer('monto');
            $table->string('ciclo');
            $table->timestamps();
            $table->foreign('clienteid')->references('id')->on('clientes');
        });
    }
    public function down(){
        Schema::dropIfExists('gps');
    }
}
=====================================

Luego en la terminal creamos la factory para esta tabla.

php artisan make:factory GpsFactory

que genera el archivo database\factories\GpsFactory.php, donde pondremos datos de prueba.

=====================================
<?php
namespace Database\Factories;
use App\Models\Gps;
use Illuminate\Database\Eloquent\Factories\Factory;
class GpsFactory extends Factory{
    protected $model = Gps::class;
    public function definition(){
        return [
          'clienteid'=>$this->faker->numberBetween(1,200),
          'nombreunidad'=>$this->faker->name(),
          'nrocel'=>$this->faker->phoneNumber(),
          'imei'=>$this->faker->numberBetween(100000000000000,999999999999999),
          'sn'=>substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 15),#string aleatorio de 15 longitud
          'monto'=>$this->faker->randomElement([50,100,150,200]),
          'ciclo'=>$this->faker->name()
        ];
    }
}
=====================================
Luego de esto vamos al archivo database\seeders\DatabaseSeeder.php y ponemos el siguiente codigo:
=====================================
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\Cliente;
use App\Models\Gps;
class DatabaseSeeder extends Seeder{
    public function run()    {
        Cliente::factory(200)->create();
        Gps::factory(1000)->create();
    }
}
=====================================
EL codigo anterior crea 200 registros aleatorios en la tabla "cliente" y 1000 en la tabla "gps".
Para ver el resultado debemos ejecutar en la terminal el siguiente comando:
=====================================
php artisan migrate
=====================================
El código anterior creara las tablas vacías, con todas las columnas y relaciones del mismo.
Luego debemos ejecutar el siguiente comando:
=====================================
 php artisan db:seed
=====================================
 Para resumir los 2 codigos anteriores pueden utilizar el comando, la cual elimina todas las tablas, las vuelve a crear y insertar los registros de prueba
=====================================
php artisan migrate:refresh --seed
=====================================


No hay comentarios:

Publicar un comentario

Crud Simple en laravel 8