如何设置全局变量Laravel

时间:2019-12-19 09:13:10

标签: laravel laravel-5 eloquent

我试图在laravel中创建一个全局变量,在我的代码中,当json返回响应时,数据出现了,但是另一个方法就是为什么它为空,

有我的密码

class VendorController extends Controller
{

    private $vendor_id;

    public function index(){
    if($cek =='available')
    {
        $this->vendor_id = DB::getPdo()->lastInsertId();
        return response()->json([
            'status' => 'success',
            'vendor_id' => $this->vendor_id
        ]);
    }
    }
    public function cek(){
    dd($this->vendor_id)
    }


}

在函数cek $ this-> vendor_id中的结果为空时,但在索引函数return-> response()-> json()中,数据为13

2 个答案:

答案 0 :(得分:3)

因为这是不同的控制器实例。因此,您在索引操作中设置了vendor_id,它将不会显示在显示操作中,

尝试使用sessionredis存储vendor_id

会话:

public function index(){
    ...
    $vendor_id = DB::getPdo()->lastInsertId();
    $request->session()->put('vendor_id', $vendor_id);
    ...
}

public function show () {
   $vendor_id = $request->session()->get('vendor_id'); // get your vendor_id
   ...
}

Redis:

PS:您需要在服务器中安装Redis。

use Illuminate\Support\Facades\Redis;
public function index(){
    ...
    $vendor_id = DB::getPdo()->lastInsertId();
    Redis::set('vendor_id', $vendor_id);
    ...
}
public function show () {
    ...
    $vendor_id = Redis::get('vendor_id');
}

答案 1 :(得分:0)

这是正确的方法:->请遵循此

class VendorController extends Controller
{
    private $vendor_id;

    public function __construct(){
        $this->vendor_id=DB::getPdo()->lastInsertId();
    }
    public function show(){
        dd($this->vendor_id);
    }
}