错误调用未定义函数 App\Http\Controllers\Admin\get_option()

Error Call to undefined function App\Http\Controllers\Admin\get_option()

你好,我将 laravel 5.4 更新为 5.7 到 5.8 到 6,然后更新到 7.14,我看到 get_option 错误

public function user()
{
    $userCount = User::where('admin','0')->count();
    $adminCount = User::where('admin','1')->count();
    $buyerCount = Sell::distinct('buyer_id')->count('buyer_id');
    $sellerCount = Sell::distinct('user_id')->count('user_id');
    $dayRegister = User::where('create_at','>',strtotime('-'.get_option('chart_day_count',10).' day')+12600)->get();
    return view('admin.report.user',['userCount'=>$userCount,'adminCount'=>$adminCount,'buyerCount'=>$buyerCount,'sellerCount'=>$sellerCount,'dayRegister'=>$dayRegister]);
}

在 laravel 5.4 我在辅助方法

中定义
function get_option($option,$default = null){
    if($result = \App\Models\Option::where('option',$option)->value('value'))
        return $result;
    else
        return $default;
}

但在 laravel 7 中不起作用!

检查您的命名空间

错误告诉您 App\Http\Controllers\Admin\get_option() 不是一个函数。这意味着它正在寻找当前命名空间中的函数。你 include/require 是不是走错路了?

创建助手class

我目前没有 Laravel7 个项目,但我在 Laravel5 中所做的是创建助手 classes 而不是普通函数。以您为例:

将其另存为 app/Helpers/OptionsHelper.php 或类似格式。

<?php

namespace App\Helpers;

class OptionsHelper
{
  /**
   * Private constructor, `new` is disallowed by design.
   */
  private function __construct()
  { }

  public static function getOption($option, $default = null){
    if($result = \App\Models\Option::where('option', $option)->value('value')) {
      return $result;
    }
    else {
      return $default;
    }
  }
}

使用 use App\Helpers\OptionsHelper 导入此助手并调用 OptionsHelper::getOption 而不是 get_option

将函数设为 public 函数并使用 self::function_name();

调用函数