Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Laravel faker slug


Laravel faker slug


Here's how to generate unique slugs using Laravel's Faker library:

Using Faker's slug() Method

You can use the `slug()` method provided by Faker to generate a slug based on a sentence:

php
$factory->define(App\Post::class, function (Faker $faker) {
    $title = $faker->sentence;
    $slug = $faker->slug;
    
    return [
        'title' => $title,
        'slug' => $slug
    ];
});

This will generate a slug like "sit-amet-consectetur" from the sentence "Sit amet consectetur"[1].

Limiting Slug Length

If your database column has a length limit, you can limit the slug length by passing the maximum word count to `slug()`:

php
$slug = $faker->slug(3);

This will generate a slug with at most 3 words, ensuring it fits within the database column length limit[4].

Ensuring Uniqueness

To ensure uniqueness, you can chain the `unique()` method:

php
$slug = $faker->unique()->slug;

This will prevent duplicate slugs from being generated[1].

Using Str::slug()

Alternatively, you can generate the slug manually using Laravel's `Str::slug()` helper:

php
$title = $faker->sentence;
$slug = Str::slug($title);

This gives you more control over the slug generation[5].

In summary, use `$faker->slug()` with optional length and uniqueness constraints to generate unique, length-limited slugs in your Laravel factories. Combine with `Str::slug()` if needed.

Citations:
[1] https://laravel-school.com/posts/how-to-use-slug-in-laravel-factory-17/
[2] https://laracasts.com/discuss/channels/laravel/how-can-i-use-sluggable-with-faker
[3] https://stackoverflow.com/questions/30582600/laravel-generate-slug-before-save
[4] https://github.com/fzaninotto/Faker/issues/485
[5] https://laracasts.com/discuss/channels/general-discussion/creating-a-slug-with-testdummy
[6] https://www.youtube.com/watch?v=pQ-V1UrOBEg