如何使变量可以在laravel中访问整个控制器

时间:2017-02-22 14:10:25

标签: php laravel laravel-5 laravel-5.3

让我说我有一个

的IndexController

其中包含一个功能

public function store($store)
{
    $store = (query)->get();
    return $store;
}

现在我希望store中的一个列可供所有函数访问,例如

$id = $store->id

我希望它可以像这样使用

public function abv()
{
    $categories = (query)->where('id','=',$id)->get();
}

我的观点是它成为整个控制器的全局变量。我如何实现这一目标?

2 个答案:

答案 0 :(得分:2)

我不确定这是否是您想要的,但您可以在Controller protected $id中声明受保护或公共变量,然后在您调用商店时

public function store($store)
{
   $store = (query)->get();
   $this->id = $store->id;
   return $store;
}

并用于其他功能:

public function abv()
{
  $categories = (query)->where('id','=',$this->id)->get();
}

但是这只适用于相同的Controller实例,如果你创建一个新的Controller实例,那么在你调用store方法之前,不会设置变量$ id。

答案 1 :(得分:2)

您可以在控制器的构造函数中将此值设置为私有属性。

class MyController {
    private $id;

    public function __construct() {
        $this->id = (query)->get();
    }

    // More controller functions
}

现在,您的控制器中的任何功能都可以使用$this->id调用此属性。