Php 在Laravel中,选择框的数据放在哪里?

Php 在Laravel中,选择框的数据放在哪里?,php,laravel,laravel-5,laravel-5.1,Php,Laravel,Laravel 5,Laravel 5.1,如果数据库中有这样的表: users id username status 状态可以是: 地位 0-未激活 1-主动 2-禁止 我应该把状态放在哪里,我有一些可能性: 面向用户的存储库中模式 在用户雄辩的课堂上 帮手 在数据库中(有时我会为此创建50多个表,我认为这不是一个好主意) 在控制器构造函数中,像“View::share('select',$usersStatuses);”一样共享它;我认为这不是一个干净优雅的解决方案 ? 编辑: {!!表单::选择('stat

如果数据库中有这样的表:

users
    id
    username
    status
状态可以是:

地位 0-未激活 1-主动 2-禁止

我应该把状态放在哪里,我有一些可能性:

  • 面向用户的存储库中模式
  • 在用户雄辩的课堂上
  • 帮手
  • 在数据库中(有时我会为此创建50多个表,我认为这不是一个好主意)
  • 在控制器构造函数中,像“View::share('select',$usersStatuses);”一样共享它;我认为这不是一个干净优雅的解决方案
  • ?

    编辑:

    {!!表单::选择('status',user_statuses(),@$user->status,数组('class'=>'表单控件'))


    看看函数“user_statuses()”,它应该在哪里以及如何获取数据?

    我建议使用2,类似这样

    class User extends Model
    {
        const STATUS_BANNED= 2;
        const STATUS_INACTIVE = -1;
        const STATUS_ACTIVE = 1;
    }
    

    模型访问属性,如User::STATUS\u ACTIVE,很清楚。

    好的,我现在明白了。在IMHO中,最好的方法是使用带有静态函数的helper类来获取用户状态

    Class UserHelper
    {
        public static function getStatuses() { 
            return [
                  0 => not_active, 
                  1 => active,
                  2 => banned
            ];
        }
    }
    
    UserHelper::getStatuses();
    
    优点:

    • 获取状态不需要初始化用户对象
    • 您也可以在控制器和视图中使用它

    我很感激,但我正在寻找一种解决方案,我可以将此数据用于选择框,如:{!!Form::select('status',user_statuses(),@$user->status,array('class'=>'Form control'))!!}使用您的解决方案,我无法获得选择框数组中的所有状态。不好,因为我有用于后端和前端的控制器,它们都使用相同的数据,并且按照您的方法,我需要在两个控制器中使用此代码,这并不是一个问题,我不知道如何实现这一点,问题是什么是最好和最优雅的方法。