CodeIgniter Forums
How To make Seeder in fake data ? - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: CodeIgniter 4 (https://forum.codeigniter.com/forumdisplay.php?fid=28)
+--- Forum: CodeIgniter 4 Support (https://forum.codeigniter.com/forumdisplay.php?fid=30)
+--- Thread: How To make Seeder in fake data ? (/showthread.php?tid=77102)



How To make Seeder in fake data ? - ysarsilmaz - 07-19-2020

Hello everyone! I having a bad time trying to use Seeder Fake data

My SettingSeeder

PHP Code:
<?php namespace App\Database\Seeds;
use 
App\Models\SettingModel;
use 
CodeIgniter\Database\Seeder;
use 
CodeIgniter\Test\Fabricator;
use 
Faker\Factory;

class 
SettingSeeder extends Seeder
{    
    
public function run()
    {
        
$faker Factory::create();        
        $formatters 
= [
            
'settingname' => $faker->name,
            
'about_us'    => $faker->text,
            
'mission'     => $faker->text,
            
'vision'      => $faker->text,
        ];
        
        $fabricator 
= new Fabricator(SettingModel::class, $formatters);
        
$fabricator->create();
    }


Code:
php spark db:seed SettingSeeder

CodeIgniter CLI Tool - Version 4.0.4 - Server-Time: 2020-07-19 07:16:45am

Unknown formatter "Zackary"
C:\laragon\www\ci4\vendor\fzaninotto\faker\src\Faker\Generator.php - 248

what is wrong ?


RE: How To make Seeder in fake data ? - jinbatsu - 08-22-2020

For seeding, I think IMO we do not actually need a Model, just use it like this sample:

PHP Code:
<?php namespace App\Database\Seeds;

use 
CodeIgniter\Database\Seeder;
use 
Faker\Factory;

class 
UsersSeeder extends Seeder {
    
    public function 
run() {
        
$faker Factory::create('id_ID');
        for (
$i=0$i 10$i++) {
            
$data = [
                
'username'     => $faker->userName,
                
'passwd'     => $faker->sha1,
                
'role'         => $faker->randomElement(['admin''staff''member']),
                
'status'     => $faker->randomElement(['active''pending''banned']),
                
'created_at'=> $faker->dateTimeBetween('-2 month''-1 days')->format('Y-m-d H:i:s'),
            ];
            
$this->db->table('users')->insert($data);
        }
    }