2017-02-07 5 views
1

Ich entwickle eine eCommerce (mit mehreren Produktattributen) Website mit Laravel 5.4. Alles funktioniert gut. Aber wenn ich versuche, mehrere Werte desselben Attributs in der Pivot-Tabelle zu synchronisieren. Laravel ignoriert die doppelten Pares. Zum Beispiel habe ich ein Attribut namens "Netzwerk", das 3 Werte hat: 2G, 3G, 4G. Ein Handy unterstützt 3G und 4G-Netzwerk. Ich möchte 3G und 4G Wert in der Datenbank synchronisieren. Laravel ignoriert einen von ihnen.Wie werden mehrere Werte desselben Attributs in Laravel synchronisiert?

Products Table: 

ID - Product Name 
1 - Test Mobile 



Attributes Table 

ID - AttributeName 
1 - Network 



AttributeValues Table 

ID - AttributeID - AttributeValue 
1 - 1   - 2G 
2 - 1   - 3G 
3 - 1   - 4G 



ProductAttributes Table 

ID - AttributeID - ProductID - AttributeValue 
1 - 1   - 1   - 3G 
1 - 1   - 1   - 4G 

Ich möchte den Artikel speichern Attribute in „ProductAttributes“ Tabelle so ähnlich. Aber Laravel ignoriere einen von ihnen.

ich die Daten wie das speichere:

$product = Product::create([ 
     'name' => 'Test Mobile' 
    ]); 

    $product->attributes()->sync([ 
     1 => ['AttributeValue' => '3G'], 
     1 => ['AttributeValue' => '4G'] 
    ]); 

Anregungen, Ideen?

+0

Ihr Array verfügt über doppelte Schlüssel. – Neat

+0

In der ProductAttributes-Tabelle sollten Sie das AttributeValues.ID-Feld anstelle der AttributeID haben. Auf diese Weise wird die Zuordnung einzigartig sein. – Shadow

+0

@Shadow Großer Punkt. Können Sie mir bitte sagen, wie ich über das Produktmodell auf die Attributtabelle zugreifen kann? –

Antwort

0

sync() Funktion in Laravel automatisch Lesevorgänge von Duplikaten. Sie können es zwingen mit

$product->attribute()->syncWithoutDetaching([ 
    1 => ['AttributeValue' => '3G'], 
    1 => ['AttributeValue' => '4G'] 
]); 

Viel Glück Kumpel!

+1

funktioniert nicht .. :( –

Verwandte Themen