Revisamos exhaustivamente cada tutorial en nuestro espacio con la meta de mostrarte siempre información certera y actual.
Solución:
No creo que este sea el mejor enfoque, pero funciona para mí.
$factory->define(AppUserSkill::class, function (FakerGenerator $faker)
return [
'user_id' => factory(AppUser::class)->create()->id,
'skill_id' => factory(AppSkill::class)->create()->id,
];
);
Si no desea crear un modelo solo para la tabla dinámica, puede insertarlo manualmente.
DB::table('user_skill')->insert(
[
'user_id' => factory(AppUser::class)->create()->id,
'skill_id' => factory(AppSkill::class)->create()->id,
]
);
O bien, con valores aleatorios existentes.
DB::table('user_skill')->insert(
[
'user_id' => User::select('id')->orderByRaw("RAND()")->first()->id,
'skill_id' => Skill::select('id')->orderByRaw("RAND()")->first()->id,
]
);
Tuve un problema similar y lo resolví de esta manera en las pruebas de Laravel.
No es necesario crear un nuevo modelo de UserSkills:
Versión Laravel 5.7
Base de datos
users user_skill skills
+----------------+ +------------------------------------+ +-----------------+
| id | name | | user_id | section_id | state_skill | | id | skills |
+----------------+ +------------------------------------+ +-----------------+
| 1 | Alex | | | | | | 1 | draw |
|----------------| |----------------------|-------------| |-----------------|
| 2 | Lucy | | | | | | 2 | program |
|----------------| |----------------------|-------------| |-----------------|
| 3 | Max | | | | | | 3 | social |
|----------------| |----------------------|-------------| +-----------------+
| 4 | Sam | | | | |
+----------------+ +----------------------+-------------+
Usuario.php
belongsToMany('AppSkill')
->withTimestamps()
->withPivot('state_skill');
PruebaBaseDeDatos.php
create()
->each(function ($user)
// Create Models Support
$skill = factory(AppSkill::class)->create();
// Create Pivot with Parameters
$user->skills()->attach($skill->id,[
'state_skill' => 'ok'
]);
);
// Testing
// ...
$this->assertTrue(true);
Para aquellos que usan laravel 8.x y buscan una solución a un problema como este;
En laravel 8.x, puede alimentar su pivote usando métodos mágicos, por ejemplo, si tiene una relación de pertenencia a muchos llamada “userSkills” en el modelo de usuario, debe alimentar la tabla dinámica de esta manera:
User::factory()->hasUserSkills(1, ['skills' => 'draw'])->create();
Puede encontrar la documentación aquí.
Aquí puedes ver las reseñas y valoraciones de los usuarios
Si aceptas, tienes la habilidad dejar una noticia acerca de qué le añadirías a este escrito.