【问题标题】:Can not set a Config value in Laravel 8无法在 Laravel 8 中设置配置值
【发布时间】:2021-09-01 21:04:09
【问题描述】:

我正在尝试将站点设置变量保存到 config/settings.php 文件中。

<?php

return [
    'APP_NAME' => 'example',
    'APP_LOGO' => 'path',
];

我可以得到这些值

  1. config('settings.APP_NAME')
  2. \Config::get('settings.APP_NAME')

但我无法设置一个使用,

  1. config(['settings.APP_NAME' =&gt; 'newValue'])
  2. \Config::set('settings.APP_NAME', 'newValue')

我做错了什么吗?有没有其他方法可以实现我想要的?

【问题讨论】:

  • 你只能在运行时更改。它不会更新到配置文件
  • 那我怎样才能达到我想要的呢?
  • 在这种情况下,我猜 db 是更好的选择
  • 但是每次请求都会执行一次数据库查询?因为变量就像 app_name 和 app_logo 等。
  • 可以缓存查询

标签: laravel configuration environment-variables laravel-8


【解决方案1】:

配置并非设计为在运行时更新。它用于设置基于服务器的固定设置,例如应用程序名称。如果您想要可编辑的设置,请使用数据库。

  • 为自己构建一个 custom helper 用于设置包装,这样您就可以像查询配置一样查询它。
  • 为自己迁移一个包含您要编辑的列的设置表
  • 将从设置帮助程序返回的值集成到您希望添加的任何位置
  • 设置一个表单,以便您可以以管理员身份编辑这些设置并将它们保存到数据库中

基本上就是这样。一般经验法则:是否持久,使用配置。是可编辑的,使用数据库(或其他形式的动态存储)。

【讨论】:

  • 在此之上,我按照@John Lobo 的建议添加了一个缓存系统。它按预期工作。
猜你喜欢
  • 2014-08-16
  • 1970-01-01
  • 2015-05-20
  • 2015-03-01
  • 2019-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多