PHPackages                             goldfinch/mill - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. goldfinch/mill

ActiveSilverstripe-vendormodule[Utility &amp; Helpers](/categories/utility)

goldfinch/mill
==============

Mill is a factory component that helps you to generate fake records for Silverstripe

v2.0.3(1y ago)049211MITPHPPHP &gt;=8.0

Since Jan 24Pushed 1y ago1 watchersCompare

[ Source](https://github.com/goldfinch/mill)[ Packagist](https://packagist.org/packages/goldfinch/mill)[ RSS](/packages/goldfinch-mill/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (4)Versions (23)Used By (11)

🦅 Mill for Silverstripe
=======================

[](#-mill-for-silverstripe)

[![Silverstripe Version](https://camo.githubusercontent.com/a798a57963ddebe0c33c27c757b7722fc95a0a6cc52f7c1839a90238934cafe4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53696c7665727374726970652d253545352e312d3030356165312e7376673f6c6162656c436f6c6f723d7768697465266c6f676f436f6c6f723d666666666666266c6f676f3d646174613a696d6167652f7376672b786d6c3b6261736536342c50484e325a79423462577875637a30696148523063446f764c336433647935334d793576636d63764d6a41774d43397a646d636949485a705a58644362336739496a41674d4341784d4445754d446b78494455344c6a55314e5349675a6d6c7362443069497a41774e57466c4d53496765473173626e4d36646a30696148523063484d364c7939325a574e30595335706279397559573576496a3438634746306143426b50534a4e4e5441754d444531494455754f445534624330794d5334794f444d674d5451754f5745324c6a55674e693431494441674d434177494463754e445134494445774c6a59314e4777794d5334794f444d744d5451754f574d344c6a67784d7930324c6a4533494449774c6a6b324c5451754d444934494449334c6a457a494451754e7a6732637a51754d444934494449774c6a6b324c5451754e7a6731494449334c6a457a624330324c6a59354d5341304c6a59334e6d4d314c6a55304d6941354c6a51784f4341784f4334774e7a67674e5334304e5455674d6a4d754e7a637a4c5451754e6a553051544d794c6a513349444d794c6a5133494441674d434177494455774c6a41784e5341314c6a67324d6e70744d5334774e5467674e4459754f444933624449784c6a49344e4330784e433435595459754e5341324c6a55674d434178494441744e7934304e446b744d5441754e6a557a5444517a4c6a59794d7941304d6934774d6a686a4c5467754f44457a494459754d5463744d6a41754f545535494451754d4449354c5449334c6a45794f5330304c6a63344e484d744e4334774d6a6b744d6a41754f545535494451754e7a67304c5449334c6a45794f5777324c6a59354d5330304c6a59334e6b4d794d6934304d79307a4c6a6b334e6941354c6a67354e4330754d44457a494451754d546b34494445774c6a41354e6d457a4d6934304e79417a4d6934304e794177494441674d4341304e6934344e7a55674e4449754e546b7965694976506a777663335a6e50673d3d)](https://packagist.org/packages/goldfinch/mill)[![Package Version](https://camo.githubusercontent.com/7eb12af87b26a1f958e0d0d2b962bd5517f262f9c13369a5dcf71b402cbe5a7d/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f676f6c6466696e63682f6d696c6c2e7376673f6c6162656c436f6c6f723d33333326636f6c6f723d463843363330266c6162656c3d56657273696f6e)](https://packagist.org/packages/goldfinch/mill)[![Total Downloads](https://camo.githubusercontent.com/3c921f2c42a78460480e487d3fef732299e64680be1f961e5d640cc1f880ad6e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f676f6c6466696e63682f6d696c6c2e7376673f6c6162656c436f6c6f723d33333326636f6c6f723d463843363330266c6162656c3d446f776e6c6f616473)](https://packagist.org/packages/goldfinch/mill)[![License](https://camo.githubusercontent.com/315e95254a6ba1add17e6af90475400466e0e93ce181b0907b9dbc8ac4158a8f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f676f6c6466696e63682f6d696c6c2e7376673f6c6162656c436f6c6f723d33333326636f6c6f723d463843363330266c6162656c3d4c6963656e7365)](https://packagist.org/packages/goldfinch/mill)

**Mill** is a factory component 🏗️ that helps you to generate fake records for Silverstripe whether to test your application or handle some automation.

If you got tired of constantly adding test content and placeholders to test your application and its components, you can forget about it, **Mill** will handle it for you.

**Mill** is using [FakerPHP](https://fakerphp.github.io/) as a fake content supplier. To learn more about available formatters you can use in your own mills, please refer to [the full list of available formatters](https://fakerphp.github.io/formatters/).

Install
-------

[](#install)

```
composer require goldfinch/mill
```

Available Taz commands
----------------------

[](#available-taz-commands)

If you haven't used [**Taz**](https://github.com/goldfinch/taz)🌪️ before, *taz* file must be presented in your root project folder `cp vendor/goldfinch/taz/taz taz`

---

> Create new mill

```
php taz make:mill
```

Use Case example
----------------

[](#use-case-example)

Let's create a new mill calling *Article* that will generate fake records for our *Article* model.

#### 1. Create new mill

[](#1-create-new-mill)

Use [**Taz**](https://github.com/goldfinch/taz)🌪️ to generate your Mill. It will quickly lead you through the setup and take care of it for you.

```
php taz make:mill Article
# What [class name] does this mill is going to work with? : App\Models\Article
```

#### 2. Prepare your mill

[](#2-prepare-your-mill)

Modify further the recently created mill by **Taz** and prepare suitable fake data for its fields.

```
namespace App\Mills;

use Goldfinch\Mill\Mill;

class ArticleMill extends Mill
{
    public function factory(): array
    {
        return [
            'Title' => $this->faker->catchPhrase(),
            'Summary' => $this->faker->sentence(200),
            'Content' => $this->faker->paragraph(10),
            'Date' => $this->faker->dateTimeBetween('-8 week')->format('Y-m-d H:i:s'),
            'Publisher' => $this->faker->name(),
            'Email' => $this->faker->email(),
            'Phone' => $this->faker->e164PhoneNumber(),
            'Address' => $this->faker->address(),
            'Country' => $this->faker->country(),
        ];
    }
}
```

#### 3. Make your model millable

[](#3-make-your-model-millable)

Lastly, you need to add `Millable` trait to the model this mill is going to work with:

```
namespace App\Models;

use SilverStripe\ORM\DataObject;
use Goldfinch\Mill\Traits\Millable;

class Article extends DataObject
{
    use Millable;

    private static $db = [
        'Title' => 'Varchar',
        'Summary' => 'Text',
        'Content' => 'HTMLText',
        'Date' => 'Datetime',
        'Publisher' => 'Varchar',
        'Email' => 'Varchar',
        'Phone' => 'Varchar',
        'Address' => 'Varchar',
        'Country' => 'Varchar',
    ];

    // ..
}
```

#### 4. Use mill

[](#4-use-mill)

Now, we should be able to call mill on our Article model to generate fake records. There are several ways to do so:

> Generate 10 articles:

```
App\Models\Article::mill(10)->make();
```

> Generate one article, overwriting some of its fields:

```
App\Models\Article::mill(1)->make([
    'Title' => 'Custom article title',
    'Content' => 'Custom text',
]);
```

> Generate 10 articles and add random categories for each (mapping):

```
App\Models\Article::mill(10)
  ->make()
  ->each(function ($item) {
    $categories = App\Models\ArticleCategory::get()->shuffle()->limit(rand(0, 4));

    foreach ($categories as $category) {
        $item->Categories()->add($category);
    }
  });
```

Recommendation
--------------

[](#recommendation)

This module plays nicely with harvest seeder [goldfinch/harvest](https://github.com/goldfinch/harvest)

License
-------

[](#license)

The MIT License (MIT)

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance32

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~5 days

Recently: every ~24 days

Total

22

Last Release

723d ago

Major Versions

v1.0.17 → v2.0.02024-03-07

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/2291826?v=4)[goldfinch](/maintainers/goldfinch)[@goldfinch](https://github.com/goldfinch)

---

Top Contributors

[![goldfinch](https://avatars.githubusercontent.com/u/2291826?v=4)](https://github.com/goldfinch "goldfinch (22 commits)")

---

Tags

fakersilverstripeFake datamillfaker-silverstripegenerate-fake-data

### Embed Badge

![Health badge](/badges/goldfinch-mill/health.svg)

```
[![Health](https://phpackages.com/badges/goldfinch-mill/health.svg)](https://phpackages.com/packages/goldfinch-mill)
```

###  Alternatives

[silverstripe/subsites

Run multiple sites from a single SilverStripe install.

65392.9k20](/packages/silverstripe-subsites)[symbiote/silverstripe-advancedworkflow

Adds configurable workflow support to the CMS, with a GUI for creating custom workflow definitions.

46295.2k7](/packages/symbiote-silverstripe-advancedworkflow)[silverstripe/taxonomy

Provide extra taxonomy for cataloguing the data.

10481.5k19](/packages/silverstripe-taxonomy)[wedevelopnl/silverstripe-elemental-grid

Elemental grid module

1014.1k2](/packages/wedevelopnl-silverstripe-elemental-grid)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
