- 基本的な使用方法:
Laravelのファクトリーカウンターは、連番を生成するために
sequence()
メソッドを使用します。例えば、name
属性に連番を持つ値を生成する場合、以下のようなコードを書くことができます。
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
class UserFactory extends Factory
{
protected $model = User::class;
public function definition()
{
return [
'name' => $this->faker->unique()->sequence('User-%s'),
// 他の属性の定義...
];
}
}
上記の例では、name
属性には "User-1"、"User-2"、"User-3" といった連番が生成されます。
- カスタムカウンターの使用: ファクトリーカウンターはカスタマイズも可能です。例えば、開始値やステップ数を指定することができます。以下は、開始値を指定して連番を生成する例です。
use App\Models\Product;
use Illuminate\Database\Eloquent\Factories\Factory;
class ProductFactory extends Factory
{
protected $model = Product::class;
public function definition()
{
return [
'name' => $this->faker->unique()->sequence('Product-%s')->starting(100),
// 他の属性の定義...
];
}
}
上記の例では、name
属性には "Product-100"、"Product-101"、"Product-102" といった連番が生成されます。
- 複数のカウンターを使用する:
複数のカウンターを使用して、複数の属性に連番を生成することもできます。以下は、
name
属性とcode
属性に連番を生成する例です。
use App\Models\Product;
use Illuminate\Database\Eloquent\Factories\Factory;
class ProductFactory extends Factory
{
protected $model = Product::class;
public function definition()
{
return [
'name' => $this->faker->unique()->sequence('Product-%s'),
'code' => $this->faker->unique()->sequence('CODE-%s'),
// 他の属性の定義...
];
}
}
上記の例では、name
属性には "Product-1"、"Product-2"、"Product-3" といった連番が、code
属性には "CODE-1"、"CODE-2"、"CODE-3" といった連番が生成されます。
これらの例を参考にして、Laravelのファクトリーカウンターを使ってデータベーステストやシーディングを効率的に行いましょう。