2017-02-07 43 views
1

我使用Laravel 5.4開發電子商務(具有多種產品屬性功能)網站。一切工作正常。但是,當我嘗試同步Pivot表中同一個屬性的多個值時。 Laravel忽略了重複的pares。例如,我有一個名爲「網絡」的屬性,它有3個值:2G,3G,4G。移動支持3G和4G網絡。我想在數據庫中同步3G和4G值。拉拉維爾忽略了其中之一。如何在Laravel中同步同一個屬性的多個值?

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 

我想將Product Attributes存儲在「ProductAttributes」表中。但是Laravel忽略了其中之一。

我節省了數據這樣的:

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

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

任何建議,想法?

+0

你的數組有重複的鍵。 – Neat

+0

在ProductAttributes表中,您應該具有AttributeValues.ID字段來代替AttributeID。這種聯繫將是獨一無二的。 – Shadow

+0

@Shadow大點。你能告訴我如何通過產品模型訪問屬性表嗎? –

回答

0

sync() Laravel中的函數自動讀取重複項。你可以強制它與

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

祝你好運隊友!

+1

不工作.. :( –

相關問題