Я занимаюсь разработкой веб-сайта электронной коммерции (с функцией нескольких атрибутов продукта) с использованием Laravel 5.4. Все работает нормально. Но когда я пытаюсь синхронизировать несколько значений одного и того же атрибута в сводной таблице. Laravel игнорирует дубликаты. Например, у меня есть Атрибут под названием «Сеть», который имеет 3 значения: 2G, 3G, 4G. Мобильный телефон поддерживает сети 3G и 4G. Я хочу синхронизировать значения 3G и 4G в базе данных. Ларавел игнорирует одного из них.
Products Table:
ID - Product Name
1 - Test MobileAttributes Table
ID - AttributeName
1 - NetworkAttributeValues Table
ID - AttributeID - AttributeValue
1 - 1 - 2G
2 - 1 - 3G
3 - 1 - 4GProductAttributes 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']
]);
Есть предложения, идеи?
sync()
Функция в Laravel автоматически получает чтение дубликатов. Вы можете заставить это с
$product->attribute()->syncWithoutDetaching([
1 => ['AttributeValue' => '3G'],
1 => ['AttributeValue' => '4G']
]);
Удачи, приятель!
Используйте метод синхронизации для хранения / обновления данных в контроллере, используя отношения:
$product-> attribute()->sync($request->input('product_ids', []));