2017-10-28 33 views
3

Ich habe zwei Tabellen products und shipments und die Pivot-Tabelle product_shipment mit Feldern product_id and shipment_no. In der Pivot-Tabelle kann es eine Sendungsnummer geben, z. # 4562, die 2 oder mehr Produkte enthält. Das möchte ich erreichen.Mehrere Elemente basierend auf IDs einfügen - Laravel

Jetzt ist das, wie meine Codes funktioniert. Wenn ich ein Produkt hammer auswähle, kann ich die ID hammer abrufen. Wenn ich die ID eines anderen Produkts screwdrivers auswähle, ersetzt es die ID von hammer anstatt beide zu speichern.

Nach meiner Einfügen von Daten, erwarte ich etwas in meiner suchte Pivot-Tabelle

Produkte Tisch

product_id name 
    1   hammer 
    2   screwdriver 

Sendungen Tabelle

shipment_no courrier   
4562   MaerskLine 

prod uct_shipment - Pivot

shipment_no  product_no 
    4562    1 
    4562    2 

Dies ist, wo meine ich mein Produkt Checkbox

HTML

<input onclick="return productSelected(this)" type="checkbox" 
id="{!! $product->id !!}" name="{!! $product->name !!}" /> 

Wie ich wählen wählen und mein Produkt-ID abrufen, wenn ich eine Checkbox

wählen

JS

function productSelected(product) 
{ 

    $(".panel").append(
    '<input type="text" value='+product.id+' " id="product_id" name="product_id" />' 

} 

Wie speichere ich Daten in meiner Datenbank

-Controller

$product_id = Input::get('product_id'); 
     $product_selected = Product::all()->where('id',$product_id)->first(); 

     $shipment_details = new Shipment(array(
      'shipment_no' => $request->get('shipment_no'), 
      'courrier' => $request->get('courrier'), 


     )); 

     $product_id->shipments()->save($shipment_details); 

Versand Modell

public function products() 
    { 
     return $this->belongsToMany('App\Product') 
     ->withTimestamps(); 
    } 

Produkt-Modell

public function shipments() 
    { 
     return $this->belongsToMany('App\Shipment') 
     ->withTimestamps(); 
    } 

Wie kann ich die alle IDs der Produkte i wählen und haben es auch aussehen wie das, was ich in meinem pivot table haben? Danke für Ihre Hilfe

+0

Haben Sie Beziehungen in den Modellen oder nicht – Maraboc

+0

@Maraboc Ja habe ich Beziehung in den Modellen. Es ist eine viele zu viele Beziehung – XamarinDevil

+0

Können Sie den Code der beiden Modelle hinzufügen? – Maraboc

Antwort

2

erste Änderung Eingangsnamen wie folgt aus:

function productSelected(product) 
{ 

    $(".panel").append(
    '<input type="text" value='+product.id+' " id="product'+product.id+'" 
    name="products[]" />' 

} 

Sie sollten nun Array-Produkte mit allen ausgewählten IDs in Ihrem Controller erhalten.So kann man so etwas tun:

$shipment_details = new Shipment(array(
     'shipment_no' => $request->get('shipment_no'), 
     'courrier' => $request->get('courrier'), 
)); 
$shipment_details->save(); 
$shipment_details->products()->sync($request->get('products')); 

Natürlich sollten Sie manyToMany Beziehung mit Product in Ihrem Shipment Modell.

+0

oh das war so einfach. Vielen Dank – XamarinDevil

Verwandte Themen