2017-10-19 24 views
1

Je suis en train d'apprendre comment insérer des relations plusieurs à plusieurs et une à plusieurs. Actuellement, je suis coincé dans une contrainte de clé étrangère lorsque j'essaie de créer un nouvel élément.Lumen: Violation de la contrainte de clé étrangère lors de l'insertion des données une à plusieurs

Mon code est très simple:

$this->model->create(
    $request->all() 
); 

Lorsque la demande a l'identifiant de l'élément et l'élément existe.

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails 

Quelle peut être une solution pour cela?

+0

Nous allons Besoin d'un peu plus de données, à quoi ressemble votre migration pour les tables et ce qui est envoyé avec la requête, et à quoi ressemble votre modèle? – Maantje

Répondre

1

Vous devez spécifier une clé étrangère. Par exemple, si vous avez l'utilisateur a de nombreux articles et rapports que vous essayez d'insérer un nouvel article, vous devez faire ceci:

$user->articles()->create($request->all()); // Foreign key will be inserted automatically. 

Ou spécifier la clé étrangère:

$this->article->create(array_merge(['user_id' => auth()->id()], $request->all())); 
+0

On dirait que le premier exemple m'a aidé, merci beaucoup. Mais le second n'a pas. Donc, si j'ai l'objet utilisateur et utiliser la relation et passer la demande tout va bien. Si dans la construction je mets mon modèle d'article et passe l'id_utilisateur via array_merge ou dans le $ request-> all, j'obtiendrai toujours la contrainte de clé étrangère, ce qui est étrange ... – NinetyHH