调用 Laravel 8

问题描述

我正在尝试将 Laravel 5.7 项目转换为 8,仍在调试中,但我无法解决该特定问题。

当我运行该项目时,我收到“Call to undefined function App\Http\Controllers\get_option()”错误

我试过了:

这是 App\Http\Controllers\MainpageController 中的错误来源:

...
        $products_recommendations = Product::select('product.*')

            ->join('product_details','product_details.product_id','product.id')

            ->where('product_details.show_recommendations',1)

            ->orderBy('update_date','desc')

            ->take(get_option('mainpage_list_product_count'))->get();
...

这是 app/Providers/helpers.PHP 文件,它有 get_option() 函数

<?PHP
use App\Models\Option;
use Illuminate\Support\Facades\Cache;

if (! function_exists('get_option')) {
    function get_option($key) {
        //$allOptions = Cache::rememberForever('allOptions',function() {
        $minute = 60;
        $allOptions = Cache::remember('allOptions',$minute,function() {
            return Option::all();
        });
        
        return $allOptions->where('key',$key)->first()->variable;
    }
}

我该如何解决

注意:我将变量和函数名称翻译成英文,以便在此处提问。

解决方法

我再次将我的助手添加到我的 composer.json 文件中:

    "autoload": {
    "files": [
        "app/helpers.php"
    ],

并输入 composer dump-autoload。成功了。

该解决方案之前没有奏效,我不得不在 composer.json 文件中删除并重写它。

还有一个错误,但至少我解决了这个问题。