Многие ко многим связывают Laravel с различными ценностями, атрибутами продуктов - PullRequest
0 голосов
/ 22 октября 2019

Мне нужно создать Атрибуты продуктов с отношением многие ко многим, но у меня проблема с атрибутом Значение. Например:

Product->belongsToMany(App\Attribute) Attribute->belongsToMany(App\Product)

Теперь мне нужно, чтобы атрибут был «Цвет», и я хочу, чтобы этот Цвет был «Красным» и взял его из другой таблицы.

Так что я не могу понять, как создать эту взаимосвязь.

Product->attributes->Color->red.

На самом деле, если я делаю это так, это работает, но, конечно, все продукты примут этоЗначение атрибута 'red', поэтому все продукты будут красного цвета, что не правильно.

Простой способ, который я попробовал и, конечно, работал нормально, без сводной таблицы и простого отношения. Просто добавили столбец в таблицу продуктов с именем и значением атрибута, но таким образом он преобразует мою таблицу продуктов в гигантскую таблицу с большим количеством атрибутов внутри, например:

'name', 'description', 'price', 'color', 'size', 'warranty' and so on with too many attributes which is really unoptimized

Ожидаемый результат - наличие нескольких атрибутов для продукта, и эти атрибуты должны иметь несколько значений для разных продуктов. Надеюсь, что кто-то может решить эту проблему отношений или просветить меня. Чем все равно.

1 Ответ

0 голосов
/ 22 октября 2019

Модель продукта

public function attributes()
    {
        return $this->belongsToMany(Attribute::class, 'product_attributes', 'product_id', 'attribute_id');
    }

Модель Arrribute

public function products()
    {
        return $this->belongsToMany(Product::class, 'product_attributes', 'attribute_id', 'product_id');
    }

Код

$product = new Product();
$attributes = $product->attributes;
$productWithAttributes = $product->with('attributes')->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...