我试图在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
答案 0 :(得分:3)
因为这是不同的控制器实例。因此,您在索引操作中设置了vendor_id
,它将不会显示在显示操作中,
尝试使用session
或redis
存储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
...
}
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);
}
}