Cleison Mendes Paiva
Criador Cleison Mendes Paiva 25/11/2021

Boa tarde

Fiquei na duvida de como eu poderia criar uma factory que possui um relacionamento belonstomany 

Na minha regra tenho uma tabela pivo no exemplo que criei para estudar.

Na minha model chamada Enterprise tenho a relação 

 public function fields()

 {

   return $this->belongsToMany(Field::class, 'common_enterprises_fields')->withTimestamps();

 }

Que se relaciona com a tabela de campos

PS. A relação e baseada no id ,não tenho uma coluna chama field_id na tabela de Enterprise

 

 

Manager Carlos Ferreira 25/11/2021

Olá, Cleison!
Tudo bem?

O que você pode fazer para trabalhar com testes em relações many to many:

Primeiro, você cria as factories dos dois itens que deseja relacionar, normal igual criamos até o momento. Tranquilo até aqui?

Segundo, gera os dados fake para as duas tabelas:
Enterprise::factory()->count(10)->create();
Field::factory()->count(10)->create();

Agora você reciona os dados, uma das várias alternativas:
$fields = Field::get();

Enterprise::get()
    ->each(function ($enterprise) use ($fields) {
    $enterprise->fields()->attach(
        $fields->random(rand(1, 3))->pluck('id')->toArray()
    );
});

Pegou a ideia amigo?

Carlos Ferreira
Criador Cleison Mendes Paiva 25/11/2021

Sim,entendi.Obrigado

Cleison Mendes Paiva
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!