首页 > 解决方案 > 错误调用未定义函数 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 中不起作用!

标签: laravellaravel-5eloquentlaravel-7

解决方案


检查您的命名空间

错误告诉你这App\Http\Controllers\Admin\get_option()不是一个函数。这意味着它正在当前命名空间中寻找函数。您是否从错误的路径中包含/要求它?

创建一个帮助类

我目前没有 Laravel7 项目,但我在 Laravel5 中所做的是创建辅助类而不是普通函数。按照你的例子:

另存为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.


推荐阅读