1. Go to this page and download the library: Download gcdtech/seeding library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
gcdtech / seeding example snippets
class CustomerSeeder extends ScenarioDataSeeder
{
public function getScenarios(): array
{
return [
new Scenario("Customers can't register if email address is in use", function(ScenarioDescription $description){
// Code to create scenario data
$description->writeLine("Something to describe what we've made");
}),
new Scenario("Customers can reset their password", function(ScenarioDescription $description){
// Code to create scenario data
$description->writeLine("Something to describe what we've made");
})
];
}
}
// Not this
$seeder = new CustomerSeeder();
$customer = $seeder->createCustomer(CustomerRecipe::create());
// Do this instead
$customer = CustomerSeeder::get()->createCustomer(CustomerRecipe::create());
class CustomerRecipe extends Recipe
{
public $forename;
public $surname;
public $email;
public $archived = false;
public $numberOfcontacts = 0;
public function withName($forename, $surname)
{
$this->forename = $forename;
$this->surname = $surname;
return $this; // Fluent style - don't forget to return $this
}
public function withEmail($email)
{
$this->email = $email;
return $this;
}
public function isArchived()
{
$this->archived = true;
return $this;
}
public function hasContacts($contacts)
{
$this->numberOfContacts = $contacts;
return $this;
}
}
class CustomerFactory extends SeedingFactory
{
public function createCustomer(?CustomerRecipe $recipe = null)
{
// 1. Make sure we have a recipe
if (!$recipe){
$recipe = CustomerRecipe::create();
}
// 2. Complete the recipe
$recipe->forname = $recipe->forename ?? $this->faker->firstname;
$recipe->surname = $recipe->surname ?? $this->faker->lastname;
$recipe->email = $recipe->email ?? $this->faker->email;
// 3. Find or make the object
$customer = $this->findOrCreateByColumns(Customer::class, [
'Forename' => $recipe->forname,
'Surname' => $recipe->surname
]);
// 4. Set the values and save
$customer->Email = $recipe->email;
$customer->Archived = $recipe->archived;
$customer->save();
// And in this case spin up some contacts too..
for($x = 0; $x < $recipe->numberOfContacts; $x++){
$this->createContact($customer, $this->faker->firstname, $this->faker->lastname);
}
}
private function createContact(Customer $customer, $forename, $surname)
{
// Do something to make a contact...
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.