【问题标题】:Undefined Variable error when passing in callback of rememberForever : Laravel 5.1传入rememberForever的回调时出现未定义变量错误:Laravel 5.1
【发布时间】:2015-12-18 13:13:19
【问题描述】:

我在做什么?

我将CategoryID 参数值作为默认值传递给where 子句

public function SubCategories($CategoryID)
{
    $CandSubCat = \Cache::rememberForever('CandSubCat' . $CategoryID, function() {
        return \App\Models\Skill\Category_Model
            ::where("CategoryID", "=", $CategoryID)
            ->with("SubCategories")
            ->first();
    });

    return view("Skill.SubCategory.List", array("CandSubCat" => $CandSubCat));
}

问题:

为什么会出现运行时错误,说:

未定义变量:Where 子句中的 CategoryID?

【问题讨论】:

  • 您使用匿名函数作为第二个参数。这个函数没有全局作用域,你必须传递一个变量给它。

标签: php laravel-5 laravel-5.1


【解决方案1】:

您应该使用 use 关键字将变量传递给函数范围,如下所示:

public function SubCategories($CategoryID)
{
    $CandSubCat = \Cache::rememberForever('CandSubCat' . $CategoryID, function() use($CategoryID) {
        return \App\Models\Skill\Category_Model
            ::where("CategoryID", "=", $CategoryID)
            ->with("SubCategories")
            ->first();
    });

    return view("Skill.SubCategory.List", array("CandSubCat" => $CandSubCat));
}

【讨论】:

  • 你的速度有多快。我只是在写同样的东西:)
猜你喜欢
  • 1970-01-01
  • 2016-01-21
  • 2019-02-18
  • 2016-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-13
  • 1970-01-01
相关资源
最近更新 更多