[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Tiago Pimentta
Criador Tiago Pimentta 04/08/2020

Olá Gente!
como eu monto a query pra elimintar os registo da tabela pivot "questao_user" ?

Eu não estou sabendo montar a query :/

https://hastebin.com/xicinawusa.php

 

 
Manager Carlos Ferreira 04/08/2020

Olá, Tiago!
Tudo bem?

Assim como usou o attach para relacionar os registros na tabela pivô, deve usar o detach para desrelacionar (deletar da tabela pivô).

https://academy.especializati.com.br/aula/laravel-relationships-many-to-many-insert

Veja, o método detach espera o id do registro que é para desrelacionar, ou um array com os IDs

Carlos Ferreira
Criador Tiago Pimentta 04/08/2020

Uma observação Carlos. Não tem na migrations o OnDelete() pra que funcione o detach() e necessário ter ele adicionado a migrante e subir novamente ou o detach independe? 

Tiago Pimentta
Criador Tiago Pimentta 04/08/2020

Não funcinou quando eu passei o relacionamento. deu esse erro:

Call to undefined method Illuminate\Database\Eloquent\Relations\HasMany::detach()

controller:

        $user = new User();
        $user->questoes()->detach([10]);

model Aula:

    public function questoes() {
        return $this->hasMany('App\Questao');
    }

Model User

    public function questoes() {
        return $this->belongsToMany('App\Questao')
            ->withPivot('correta')
            ->withPivot('resposta')
            ->withTimestamps();
    }
Tiago Pimentta
Manager Carlos Ferreira 04/08/2020

Isso daqui está errado:
$user = new User();
$user->questoes()->detach([10]);

Por que? Porque $user é apenas uma instância do model User, apenas isso.

Como daria certo?
$user = User::find(1);

Neste caso daria certo, porque você está lidando com um usuário especifico.

-----------

Quer remover um relacionamento N:N? Precisa ter dados das duas pontas, do User e da Questao
$idUser = 1;
$user = User::where('id', '=', $idUser)->first();
// $user é objeto do usuário de id 1

Agora podemos remover o relacionamento N:N do user com as questões:
$user->questoes()->detach([1, 2]);

Neste exemplo desvinculou o usuário 1 com as questões 1 e 2 (deletou o registro na tabela pivô).

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!