Мне нужно активно использовать статусы в проекте mt. Мне нужны они для моих users (active, suspended и т.д.), Сущности (active, pending_activation, inactive) и для моих подписки (active, on_grace_period, not_subscribed, never_subscribed).
До сих пор я думал, что лучший способ - хранить их в БД, но у меня есть ощущение, что гораздо проще иметь их в других 3 вариантах.
Я также думал, что могу сохранить их в моей модели Eloquent как константы. Например, моя модель подписки будет выглядеть так:
// SubscriptionModel
const SUBSCRIBED_ACTIVE = 1;
const SUBSCRIBED_ON_GRACE_PERIOD = 2;
const NOT_SUBSCRIBED = 3;
const NEVER_SUBSCRIBED = 4;
и извлечение их, например, в виде лезвия:
// subscription/index.blade.php
@if($user->subscription->status == /App/SubscriptionModel::SUBSCRIBED_ACTIVE)
<div>You are subscribed. Thank you</div>
@elseif($user->subscription->status == /App/SubscriptionModel::NEVER_SUBSCRIBED)
<div>You need to create a subscription before being granted full access!</div>
@elseif(...)
// and so on
Как сделать то же самое, но с помощью папки config и добавления файла с именем status.php. Доступ к нему в представлении будет выглядеть следующим образом:
@if($user->subscription->status == Config::get('status.subscription.SUBSCRIBED_ACTIVE'))
<div>You are subscribed. Thank you</div>
@elseif(...)
// etc
Есть ли лучший способ?
Кроме того, как насчет другой части уравнения, что означает статус, сохраненный в DB. Должен ли я иметь столбец status для таблицы подписки и хранить то, что приложение диктует или даже делает ставку, создать отдельную таблицу subscription_statuses и иметь foreign_key subscription_status_id в таблице subscriptions?