Как одной ячейке присвоить несколько связей?
Пример: Есть две таблицы: категории и товары. Категории: id, name. Товары: id, category_id, title, desc, price. Как одному товару добавить несколько категорий(связей): например category_id: 1, 3, 5
Ответы (1 шт):
Переделать структуру под 3 таблицы: categories, items, category_item.
В категориях оставить id, name. В товарах id, title, desc, price. В третьей таблице category_id, item_id. Если вы используете laravel, как указано в тегах, можно воспользоваться такими миграциями:
Schema::create('categories', function (Blueprint $table) {
$table->id();
$table->string('name');
});
Schema::create('items', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('desc');
$table->string('price');
$table->timestamps();
});
Schema::create('category_item', function (Blueprint $table) {
$table->foreignId('category_id')->constrained();
$table->foreignId('item_id')->constrained();
});
И в моделях указать связи:
// Models\Category
public function items(){
return $this->belongsToMany(Item::class);
}
// Models\Item
public function categories(){
return $this->belongsToMany(Category::class);
}
После этого сможете в третьей таблице указывать Id товара и id нужной категории в отдельных записях и получать все категории, принадлежащие товару, а также все товары, принадлежащие категории.