【问题标题】:How to set global variable laravel如何设置全局变量 laravel
【发布时间】:2019-12-19 18:18:34
【问题描述】:

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

这是我的代码

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

【问题讨论】:

  • 发布代码,展示您如何调用这些方法
  • 只是
  • 但是你是怎么触发cek()方法的呢?
  • 是的,在网络上。 php Route::get('/tryId', 'VendorController@cek')->name('trivendor');
  • 你是如何触发index()方法的?

标签: laravel laravel-5 eloquent


【解决方案1】:

因为那是不同控制器的实例。所以你在索引操作中设置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');
}

【讨论】:

  • 这是正确的,也许你应该给出一个代码示例?否则,这可能只是评论更好。
  • @GBWDev 等一下
【解决方案2】:

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

class VendorController extends Controller
{
    private $vendor_id;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-13
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多