es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Fábrica de Laravel: cómo hacer que un campo tenga contenido y el otro sea nulo

Estoy creando una fábrica de etiquetas y quiero que genere tanto un “projectid” como un “gobalid” pero no ambos.

return [
    'project<em>card</em>id' => ProjectCard::inRandomOrder()->first()->id,
    'user_id' => User::inRandomOrder()->first()->id,
    // para generar project_tag_id o global_tag_id pero no ambos
    'project_tag_id' => ProjectTag::inRandomOrder()->first()->id,
    'global_tag_id' => $this->faker->numberBetween(1,5),
];

Cualquier ayuda o información sobre esto sería muy apreciada.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para generar o bien project_tag_id o bien global_tag_id, pero no ambos, en la fábrica de etiquetas, puedes utilizar una declaración condicional. Aquí tienes un ejemplo de código:

    return [
        'project_card_id' => ProjectCard::inRandomOrder()->first()->id,
        'user_id' => User::inRandomOrder()->first()->id,
    
        // para generar project_tag_id o global_tag_id pero no ambos
        'project_tag_id' => ($this->faker->boolean) ? ProjectTag::inRandomOrder()->first()->id : null,
        'global_tag_id' => (!$this->attributes['project_tag_id'] && $this->faker->boolean) ? $this->faker->numberBetween(1,5) : null,
    ];
    

    En este código, hemos añadido un operador ternario a project_tag_id para asignar aleatoriamente su valor a un id de etiqueta de proyecto o a null. Luego, hemos utilizado otro operador ternario en global_tag_id para asignarle el valor de null si project_tag_id tiene un valor y generar aleatoriamente un número entre 1 y 5 en caso contrario. De esta manera, nos aseguramos de que solo uno de project_tag_id o global_tag_id tenga un valor en cada momento.

Comments are closed.