I have a users
table and a roles
table that has a many-to-many relationship. These two tables are connected to a junction table called role_user
.
This is a model of the tables and its connections.
Below are the Models in my Laravel project:
User
namespace App;
use IlluminateDatabaseEloquentModel;
class User extends Model
{
public function roles()
{
return $this->belongsToMany('AppRole');
}
}
Role
namespace App;
use IlluminateDatabaseEloquentModel;
class Role extends Model
{
public function users()
{
return $this->belongsToMany('AppUser');
}
}
Below is the Factory file in the Laravel project:
$factory->define(AppUser::class, function (FakerGenerator $faker) {
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => $password ?: $password = bcrypt('secret'),
];
});
$factory->define(AppRole::class, function (FakerGenerator $faker) {
return [
'role' => $faker->realText($maxNbChars = 2),
'description' => $faker->realText($maxNbChars = 20),
];
});
Below is the Seed file in the Laravel project:
public function run()
{
factory(AppUser::class, 50)->create()->each(function ($u) {
$u->roles()->save(factory(AppRole::class)->make());
});
factory(AppRole::class, 20)->create()->each(function ($u) {
$u->users()->save(factory(AppUser::class)->make());
});
}
This should populate the users
table and the roles
table but how do I go about populating the role_user
table? (I don't have a Model file for the junction table.)
I'm very new at this so any help would be appreciated. Thanks.
question from:https://stackoverflow.com/questions/45269146/laravel-seeding-many-to-many-relationship