在 Laravel 中,我有一个表设置,并且我已从 BaseController 中的表中获取完整数据,如下所示
public function __construct()
{
// Fetch the Site Settings object
$site_settings = Setting::all();
View::share('site_settings', $site_settings);
}
现在我想访问$site_settings。在所有其他 Controller 和 View 中,这样我就不需要一次又一次地编写相同的代码,所以任何人请告诉我解决方案或任何其他方式,以便我可以从表中获取数据一次并在所有 Controller 中使用它查看。
最佳答案
好吧,我将完全忽略其他答案中普遍存在的荒谬的过度工程和假设,并选择简单的选项。
如果您同意在每个请求期间有一个数据库调用,那么该方法很简单,令人担忧的是:
class BaseController extends \Controller
{
protected $site_settings;
public function __construct()
{
// Fetch the Site Settings object
$this->site_settings = Setting::all();
View::share('site_settings', $this->site_settings);
}
}
现在假设所有 Controller 都扩展此 BaseController,他们只需执行 $this->site_settings
即可。
如果您希望限制多个请求之间的查询量,您可以使用前面提供的缓存解决方案,但根据您的问题,简单的答案是类属性。
关于laravel - 所有 Controller 和 View 的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25189427/