首页 > 解决方案 > Laravel 在控制器构造函数中从数据库中获取应用程序常量

问题描述

使用我的应用程序,我有 5 个变量需要定期更改,因此我在数据库中为这些变量创建了一个表,以便我们可以在需要时更新它们,并在与其中一个或两个变量关联的控制器中获取变量值从控制器构造方法中的数据库中,并将其分配给另一个变量$distance,以在其他控制器功能和数据库查询中使用它,如下所示

从数据库中获取变量:

class AccountController extends Controller
{


    private  $distance;
    public function __construct()
    {
        $this->distance = AppConstants::where('id',1)->value('is_available');
       
    }
....

并将其用作函数:

 public function ListNearByRes()
    {
        
  
        $res = DB::table('res_profile as r')
                ->where('r.distance','<',$this->distance)
                ->select(......)->get();
           
            return response()->json(['status_code'=>1000,'data'=>$res,'message'=>null],200);
        
    }

代码运行良好,但我只想问这是否是最好和理想的方法?如果我的情况还有其他方法

标签: phplaravellumen

解决方案


我看到了很多解决方案,但这是我更喜欢的:

在 config 文件夹中添加一个配置文件并将其命名为global-var.php,然后添加您的配置:

<?php
return [
    'distance' => 'value',
    'speed' => 'value'
];

现在在routes, 中controllerviews您可以使用

Config::get('global-var.distance')
//views
{{ Config::get('global-var.distance') }}
// or just  config('global-var.distance');

每当您想更新全局变量时,您都可以:

$data = [
    "distance" => "value"; // your input
];

Config::write('global-var', $data);

推荐阅读