0) { Profesion::factory()->count($profesiones)->create(); } $profesionIds = Profesion::query()->pluck('id')->all(); // Servicios if ($servicios > 0 && count($profesionIds) > 0) { $contenidoWebId = DB::table('contenidoswebs')->value('id'); Servicio::factory() ->count($servicios) ->state(fn () => [ 'profesion_id' => $profesionIds[array_rand($profesionIds)], 'contenidoweb_id' => $contenidoWebId, ]) ->create(); } // Profesionales $profesionalesCreados = collect(); if ($profesionales > 0 && count($profesionIds) > 0) { $profesionalesCreados = Profesional::factory() ->count($profesionales) ->state(fn () => [ 'profesion_id' => $profesionIds[array_rand($profesionIds)], ]) ->create(); } // Clientes $clientesCreados = collect(); if ($clientes > 0) { $clientesCreados = Cliente::factory()->count($clientes)->create(); } // Relacion cliente-profesional: cada cliente queda asociado a 1..3 profesionales if ($clientesCreados->isNotEmpty() && $profesionalesCreados->isNotEmpty()) { $idsProfesionales = $profesionalesCreados->pluck('id')->values()->all(); $maxAsignables = min(3, count($idsProfesionales)); foreach ($clientesCreados as $cliente) { $cantidadAsignaciones = random_int(1, $maxAsignables); $idsSeleccionados = collect($idsProfesionales) ->shuffle() ->take($cantidadAsignaciones) ->values() ->all(); $payload = []; foreach ($idsSeleccionados as $profesionalId) { $payload[$profesionalId] = ['estadorelacion' => 'Activo']; } $cliente->profesionales()->syncWithoutDetaching($payload); } } } }