No Laravel, um erro intrigante pode surgir ao tentar excluir uma postagem que tem curtidas associadas. A mensagem de erro proclama:
"SQLSTATE[23000]: Violação de restrição de integridade: 1451 Não é possível excluir ou atualizar uma linha pai: uma restrição de chave estrangeira falha (eliapi8.likes, CONSTRAINT likes_post_id_foreign FOREIGN KEY (post_id) REFERENCES posts ( id))"
Analisando o esquema
Ao examinar o esquema, torna-se evidente que existe uma restrição de chave estrangeira no campo post_id da tabela de curtidas. Essa restrição impede a exclusão de um registro de postagem se houver algum registro semelhante associado.
Soluções propostas
Solução 1: Utilize onDelete('cascade')
A introdução de onDelete('cascade') no arquivo de migração da tabela de curtidas fornece uma solução. Ao usar esta diretiva, quando um registro de postagem é excluído, todos os registros semelhantes correspondentes são automaticamente removidos:
Schema::create('likes', function (Blueprint $table) { $table->integer('post_id')->unsigned(); $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade'); });
Solução 2: Alavancar relacionamentos do modelo
Se o modelo Post mantém um relacionamento com o modelo Like, a seguinte abordagem pode ser empregada:
Ao adotar qualquer uma dessas soluções, o erro problemático pode ser resolvido, permitindo que as postagens sejam excluídas independentemente de sua preferência status.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3