Хранить статический массив, используемый рядом моделей - PullRequest
0 голосов
/ 23 января 2019

У меня есть приложение, написанное на Laravel 5. У меня есть модель Product, в которой используется таблица products.

. В таблице я хочу сохранить размер продукта.На данный момент есть только два размера: M и L, которые означают Средний и Большой.

Пользователь с правами администратора может обновить размер, поэтому у меня будет выпадающий список для этого.Мой вопросКаков наилучший способ хранения данных о размере?

  1. Добавление статического массива Модель продукта
  2. Создание модели размера с базой данных со связью
  3. Создание размераМодель без базы данных, но со статическим массивом
  4. Добавить массив в файл конфигурации

Возможно, что будут введены дополнительные размеры и другие модели будут их использовать.Я думаю, что было бы просто добавить статический массив в модель Product.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

В соответствии с вашей целью вы можете создать 2 модели, как показано ниже, и установить для них отношения.

class Product extends Model
{
    //You have only one size for each product
    public function size()
    {
        return $this->belongsTo(Size::class);
    }
}

class Size extends Model
{
    public function products()
    {
        return $this->hasMany(Product::class);
    }
}
0 голосов
/ 23 января 2019

Я бы создал ProductSize модель и соответственно определил бы ее отношения.

class Product extends Model
{
    public function sizes()
    {
        return $this->hasMany(ProductSize::class); 
    }
}

class ProductSize extends Model
{
    public function product()
    {
        return $this->belongsTo(Product::class); 
    }
}

Чтобы получить доступ к размерам продукта, вы можете просто сделать:

Product::find(1)->sizes; 

Я незнаю ваш вариант использования, и я думаю, что хотя он может работать с массивом, просто не имеет смысла это делать.

Кроме того, не все продукты могут быть доступны во всех размерах.Как бы вы позаботились об этом сценарии с массивом?Кроме того, хранение данных в базе данных значительно упрощает запросы, создание отчетов и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...