Laravel 5.4を使用したeコマース(複数の商品属性機能付き)ウェブサイトを開発しています。すべてがうまくいきます。しかし、ピボットテーブルで同じ属性の複数の値を同期しようとすると、ラーヴェルは重複しているペアを無視します。たとえば、2G、3G、4Gの3つの値を持つ「ネットワーク」という属性があります。モバイルは3Gと4Gネットワークをサポートしています。私はデータベースに3Gと4Gの値を同期したい。 Laravelはそれらの1つを無視します。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
"ProductAttributes"テーブルに商品属性を保存するとします。しかしLaravelそれらの1つを無視してください。
私はそのようなデータを保存しています:
$product = Product::create([
'name' => 'Test Mobile'
]);
$product->attributes()->sync([
1 => ['AttributeValue' => '3G'],
1 => ['AttributeValue' => '4G']
]);
任意の提案、アイデア?
アレイに重複するキーがあります。 – Neat
ProductAttributesテーブルには、AttributeIDの代わりにAttributeValues.IDフィールドが必要です。この方法では、関連付けは一意になります。 – Shadow
@Shadow素晴らしい点。製品モデル経由でテーブルの属性にアクセスする方法を教えてください。 –