1. Go to this page and download the library: Download saada/yii2-factory-muffin 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/ */
use saada\FactoryMuffin\FactoryInterface;
use League\FactoryMuffin\Faker\Facade as Faker;
class Message extends ActiveRecord implements FactoryInterface
{
//...
public function definitions() {
return [
[
'user_id' => 'factory|'.User::class,
'subject' => Faker::sentence(),
'message' => Faker::text(),
'phone_number' => Faker::randomNumber(8),
'created' => Faker::date('Ymd h:s'),
'slug' => self::class . '::makeSlug',
],
function($object, $saved) {
// we're taking advantage of the callback functionality here
$object->message .= '!';
}
];
}
//...
}
// and here's my interpretation of what a Yii2 model would look like
class User extends ActiveRecord implements IdentityInterface, FactoryInterface
{
//...
public function definitions() {
$security = Yii::$app->getSecurity();
return [
[
'first_name' => Faker::firstName(),
'last_name' => Faker::lastName(),
'phone' => Faker::phoneNumber(),
'email' => Faker::email(),
'auth_key' => $security->generateRandomString(),
'password_hash' => $security->generatePasswordHash('MyFixedTestUserPassword'),
'password_reset_token' => $security->generateRandomString() . '_' . time(),
]
];
}
//...
}
use saada\FactoryMuffin\FactoryMuffin;
class MuffinTest extends TestCase {
//...
public function testCreateFiveMessages()
{
//init factory muffin
$fm = new FactoryMuffin();
$fm->loadModelDefinitions([Message::class, User::class]);
// alternatively you can pass the same array to the constructor
$fm = new FactoryMuffin([Message::class, User::class]);
//seed database with 5 messages add set some custom attributes.
$messages = $fm->seed(5, Message::class, ['created_by' => 1, 'company_id' => 1]);
Debug::debug($messages);
$this->assertNotEmpty($messages);
// confirm that users were created for each message
foreach ($messages as $message) {
$this->assertInstanceOf(User::class, $message->user);
}
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.