Вернуть сводные данные в зависимости от контекста модели (загружены как отношения или нет?) - PullRequest
0 голосов
/ 14 октября 2019

Я просто думаю о том, возможно ли повлиять на модель, чтобы она возвращала значения в зависимости от того, какая сводная таблица загружена.

Модель, о которой я говорю, может быть продуктом или продуктом, являющимся частьюкомплекта продуктов.

Product

class Product extends Model
{
    protected $fillable
        = [
            'title', 'price'
        ];

    public function productAttributes()
    {
        return $this->belongsToMany(ProductAttribute::class)
            ->withPivot('value', 'title');
    }

    public function productBundleAttributes()
    {
        return $this->belongsToMany(ProductAttribute::class,
            'product_product_attribute_bundle')
            ->withPivot('value', 'title');
    }
}

Каждый продукт имеет несколько атрибутов (Модель: ProductAttributes). Здесь также каждый атрибут имеет определенные значения и сводную таблицу, которая указывает, какие значения должны использоваться для атрибута для продукта.

Пример

Product:

  • title: обувь
  • price: $ 20

ProductAttributes:

  • material: Кожа
  • color: зеленый

Следовательно, продукт может иметь несколько атрибутов (здесь: material, color). Атрибуты продукта могут быть определены в другом месте и назначены новому продукту через маску ввода для продукта.

Однако в новом продукте стандартные значения атрибутов также могут быть перезаписаны. Пример: материал - кожа, но это специальная кожа, и поэтому название атрибута больше не «кожа», а «кожа ягненка».

Для достижения этого у каждого атрибута продукта есть ось. таблица снова.

Теперь это становится слишком сложным для меня:

Если продукт принадлежит к пакету продуктов, он также должен иметь эти сводные таблицы - но изменение атрибута продукта в продукте. Комплектация не должна изменять данные атрибута для фактического товара. Таким образом, у продукта есть две сводные таблицы для его атрибутов:

  • Одна, если вы находитесь в контексте "продукта"
  • Одна, если вы находитесь в контексте "пакета продукта".

Теперь возникает вопрос: есть ли способ увидеть, в каком контексте расположен атрибут, чтобы облегчить получение сводных значений? Возможно ли даже, что

Product -> Attributes -> Leather -> Title автоматически возвращает заголовок сводной таблицы комплектов продуктов, если вы находитесь в контексте комплектов продуктов, или заголовок сводной таблицы продуктов, если этотразве это не так?

...