2015-10-08 3 views
2

J'ai deux tables. Un tableau product et un autre tableau product_image. Un produit peut avoir plusieurs images et l'image d'un produit ne peut avoir qu'une seule image.Insérer des données de clé étrangère dans la base de données

Ainsi,

Pour ProductImage modèle

public function product() 
    { 
     return $this->belongsTo('App\Models\Product'); 
    } 

Pour product modèle

public function image() 
{ 
    return $this->hasMany('App\Models\ProductImage'); 
} 

J'ai fait rapport clé étrangère en utilisant la migration.

Maintenant, ce que je suis incapable de le faire est

Je suis en train de télécharger une image pour un produit spécifique. comment puis-je obtenir le id du product à insérer dans product_id du tableau productImage?

+0

Vous devez d'abord insérer le produit. Obtenez l'ID de produit à partir de là et utilisez-le pendant que vous ajoutez des images de produits. _Bcoz, il n'y aura pas d'images sans produit._ –

+0

@RonakPatel ok J'ai une page de produits. Après avoir cliqué sur un produit spécifique, l'utilisateur peut voir une btn d'image ajoutée et quand il clique sur ce formulaire de téléchargement de photo apparaît. Maintenant, lorsque l'utilisateur télécharge la photo, l'identifiant du produit doit également être inséré. Si je joins l'identifiant du produit au bouton pour ajouter des photos, il sera vulnérable, n'est-ce pas? – Raaz

+0

vous devez obtenir l'ID produit en quelque sorte. Vous pouvez utiliser l'une des méthodes de cryptage et la placer dans une balise 'input' cachée dans votre formulaire HTML. Puis déchiffrez-le avant de l'ajouter dans la base de données. –

Répondre

1

Vous avez one-to-many relation ici, les relations entre vos modèles sont vraies, j'ai juste un petit commentaire pour la fonction image() dans votre modèle product qui devrait être images() pluriel. Maintenant, pour la mise en œuvre, vous devez d'abord créer un produit et commencer à lui associer des images. Ainsi, vous n'avez pas à vous soucier de product_id, il vous suffit d'utiliser la méthode associate pour définir la clé étrangère le modèle enfant, voir l'exemple ci-dessous:

//Creation of product 
$product = Product::create(['Your attributes here']); 

//Association of images 
$product->images()->associate('Your image 1 here'); 
$product->images()->associate('Your image 2 here'); 
$product->images()->associate('Your image 3 here'); 

//To get the images associated with your product 
$product->images(); 

Espérons que cela aide.

-1

Ce n'est pas le résultat exact, mais il vous aidera à comprendre comment obtenir le dernier identifiant inséré. exemple:

<?php 
    $product = new Product; //create the object 

    $product->image= 'Your_image'; // image column 

    $product->save(); //store data 

    //Getting Last inserted id 

    $insertedId = $product->id; 
    ?>