Modal Factory tutorial in Laravel 11
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('students', function (Blueprint $table) {
$table->id();
$table->string("name", 30);
$table->integer("age");
$table->string("email", 40)->nullable()->unique();
$table->string("address");
$table->string("city");
$table->string("phone");
$table->string("password");
$table->timestamps();
// When we create table and if we insert data in table using "create()" method at that time
// we must have to use "timestamps()" column while creating table because "create()" method
// needs to add two column values "created_at" and "updated_at" in table that's why we must
// use "timestamps()" column but if we use old method "insert()" instead of "create()" then
// there is no need to use "timestamps()" method
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('students');
}
};
Above File is database/migrations/create_students_table.php FileBelow File is database/factories/StudentFactory.php File
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Student>
*/
class StudentFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
"name" => fake()->name(),
"age" => fake()->numberBetween(15, 20),
"email" => fake()->email(),
"address" => fake()->address(),
"city" => fake()->city(),
"phone" => fake()->phoneNumber(),
"password" => fake()->password()
];
}
}
Below File is database/seeders/StudentSeeder.php File
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use App\Models\student;
use Illuminate\Support\Facades\File;
class StudentSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
student::factory(5)->create();
// for ($i = 1; $i <= 10; $i++) {
// student::create([
// "name" => fake()->name(),
// "email" => fake()->unique()->email()
// ]);
// }
// $json = File::get(path: "database/json/students.json");
// // To use sub methods of collect(), we have used collect() as shown below :
// $students = collect(json_decode($json)); //json_decode() converts json to Array
// // When we create table and if we insert data in table using "create()" method at that time
// // we must have to use "timestamps()" column while creating table because "create()" method
// // needs to add two column values "created_at" and "updated_at" in table that's why we must
// // use "timestamps()" column but if we use old method "insert()" instead of "create()" then
// // there is no need to use "timestamps()" method
// $students->each(function ($stu) {
// student::create([
// "name" => $stu->name,
// "email" => $stu->email
// ]);
// });
}
}
Below File is database/seeders/DatabaseSeeders.php File
<?php
namespace Database\Seeders;
use App\Models\User;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use App\Models\student;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
// User::factory(10)->create();
// User::factory()->create([
// 'name' => 'Test User',
// 'email' => 'test@example.com',
// ]);
// student::factory()->count(5)->create();
$this->call([
StudentSeeder::class
]);
}
}
Below File is app/Models/student.php File
.png)
.png)
.png)
.png)
.png)
.png)
Comments
Post a Comment