Я разрабатываю eCommerce (с функцией нескольких атрибутов продукта), используя Laravel 5.4. Все работает нормально. Но когда я пытаюсь синхронизировать несколько значений одного и того же атрибута в сводной таблице. Ларавел игнорирует дубликаты. Например, у меня есть атрибут «Сеть», который имеет 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
Я хочу сохранить Атрибуты продукта в таблице «ProductAttributes», что-то вроде этого. Но Ларавел Игнорирует одного из них.
Я спасаю данные так:
$product = Product::create([
'name' => 'Test Mobile'
]);
$product->attributes()->sync([
1 => ['AttributeValue' => '3G'],
1 => ['AttributeValue' => '4G']
]);
Любые предложения, идеи?
В вашем массиве есть дубликаты ключей. – Neat
В таблице ProductAttributes должно быть поле AttributeValues.ID вместо AttributeID. Таким образом, ассоциация будет уникальной. – Shadow
@ Shadow Отличная точка. Не могли бы вы рассказать мне, как я получу доступ к таблице атрибутов через модель продукта? –