Я создаю веб-сайт, который отображает спецификации и характеристики сервера:
Основные объекты:
Категория:
Выражение класса серверов («общие серверы», «облачные серверы»)
Категория содержит пакеты (планы), и все пакеты в классе имеют одинаковые функции, но разные по значениям.
Категория также содержит несколько сервисов и несколько часто задаваемых вопросов.
Пакет:
Содержащие пакеты (планы), такие как («Бизнес-план», «Безлимитный план», «Рабочий план»)
Все пакеты имеют одинаковую форму, но различаются по значениям для общих функций.
Администратор может создать шаблон класса и добавить функции, доступные в этой категории, а затем добавить пакеты в этой категории.
Я создал этот дизайн базы данных (ссылка на изображение: https://i.imgur.com/aUgR6mb.png)
Особенности клавиш Модель
class HostingFeatureKey extends Model
{
protected $table = 'hosting_feature_keys';
public function feature_values()
{
return $this->hasManyThrough(
'App\HostingPackageHasFeatureValue',
'App\HostingCategoryHasFeatureKey',
'feature_key_id',
'category_has_feature_key_id',
'id',
'id'
);
}
public function feature_value_of(HostingPackage $package)
{
return $this->feature_values()->get()->where('package_id', $package->id)->first();
}
}
- Функция «feature_value_of» работает правильно
Комплектация
class HostingPackage extends Model
{
protected $table = 'hosting_packages';
public function category()
{
return $this->belongsTo('App\HostingCategory', 'category_id');
}
public function icon()
{
return $this->belongsTo('App\HostingIcon', 'icon_id');
}
public function feature_values()
{
return $this->hasMany('App\HostingPackageHasFeatureValue', 'package_id', 'id');
}
public function feature_value_of(HostingFeatureKey $feature_key)
{
//
}
}
Как реализовать функцию "feature_value_of" в модели HostingPackage, чтобы вернуть значение ключа "feature_key" для этого объекта как функцию "feature_value_of" в модели HostingFeatureKey.