我需要在我的项目中广泛使用状态。我需要它们用于我的用户
(活跃
,已暂停
等),实体(活跃
,待激活
,不活跃
)以及我的订阅(活跃
,宽限期内
,未订阅
,从未订阅
)。
到目前为止,我认为最好的方法是将它们存储在数据库中,但我有一种感觉,在其他三个选项中拥有它们会更容易些。
我还想到可以将它们存储在我的Eloquent
模型中作为常量。例如,我的订阅模型将如下所示:
// SubscriptionModel
const SUBSCRIBED_ACTIVE = 1;
const SUBSCRIBED_ON_GRACE_PERIOD = 2;
const NOT_SUBSCRIBED = 3;
const NEVER_SUBSCRIBED = 4;
并检索它们,例如在 Blade 视图中:
// 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
的单独表,并在subscriptions
表中拥有一个foreign_key
subscription_status_id
?
Model::select('myvar')->where('myvar','=' myvar)->get();
。@Cristian,请检查我的回答,您可以在.env
中使用全局变量或创建一个文件进行配置。这取决于您是否需要更多的变量,如果只需要4个变量,您不应该为它们创建一个文件,这样做并不优雅。我在我的回答中标记了一条评论,因为用户给出了负面评价,原因是“可能*你必须创建和配置文件而不是.env”。很遗憾有些人会给你点踩却没有解决方案或者解释为什么你的回答不够好。 - Shapi