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:
=====================================
=====================================
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
=====================================