29 lines
1.4 KiB
Markdown
29 lines
1.4 KiB
Markdown
|
|
# Walkthrough - Initial Database Data Seeding
|
||
|
|
|
||
|
|
I have implemented a database-agnostic Laravel Seeder to handle the initial database population from the `db/kulakposmysql.sql` file. This approach is compatible with both MySQL and PostgreSQL.
|
||
|
|
|
||
|
|
## Changes Made
|
||
|
|
|
||
|
|
### Database Seeders
|
||
|
|
|
||
|
|
- **Created [InitialDataSeeder.php](file:///media/itc43/Data/OTHER_PROJECT/kulakpos/kulakpos_15_Maret2026_to_GTEA/public_html/database/seeders/InitialDataSeeder.php)**:
|
||
|
|
- This seeder dynamically reads the `db/kulakposmysql.sql` file.
|
||
|
|
- It parses `INSERT INTO` statements and uses Laravel's `DB::table()->insert()` to populate the tables.
|
||
|
|
- It automatically detects the database driver (MySQL or PostgreSQL) and applies the correct commands to temporarily disable foreign key constraints during the import.
|
||
|
|
- It uses Laravel's Schema Builder to map data values to the correct table columns.
|
||
|
|
|
||
|
|
## How to Verify
|
||
|
|
|
||
|
|
1. **Run standard migrations first** (if not already done):
|
||
|
|
```bash
|
||
|
|
php artisan migrate
|
||
|
|
```
|
||
|
|
2. **Run the Initial Data Seeder**:
|
||
|
|
```bash
|
||
|
|
php artisan db:seed --class=InitialDataSeeder
|
||
|
|
```
|
||
|
|
3. **Verify Data**: Check your database (e.g., `users`, `businesses`) to confirm that the data from the SQL file has been correctly imported.
|
||
|
|
|
||
|
|
> [!TIP]
|
||
|
|
> This seeder is designed to be safe for PostgreSQL, which was the cause of the previous failure. It uses the `session_replication_role` setting to handle foreign keys on PostgreSQL.
|