Laravel 5.4 - 我不能使用静态数组来保存控制器中的数据。怎么处理呢?

时间:2017-06-17 13:07:21

标签: laravel-5

我想保留每个请求中的一些数据,但我不想使用数据库,因为这些数据只是暂时的,所以...我在我的控制器中使用静态数组,

public static $aId = [];

当请求进来时,我将数据并将其推送到该数组,就像

一样
public function saveId(Request $request){
   $id = $request->id;
   array_push(MyController::$aId,$id);
   return var_dump(MyController::$aId);
}

但问题是,每个请求都会使该数组成为一个新数组,我总是得到一个只有一个数据的数组。请帮帮我。

2 个答案:

答案 0 :(得分:1)

使用会话在多个请求中保留数据。

public function saveId(Request $request){
   $id = $request->id;
   $request->session()->push('aId', $id');
   return print_r($request->session()->get('aId'), true);
}

更多信息:https://laravel.com/docs/5.4/session

答案 1 :(得分:0)

缓存或会话都适合您。创建一个唯一键,例如

$key = Auth::user()->id . '-aId';

Cache::put($key, $id, Carbon::now()->addMinutes(10));

Session::put($key, $id);

并在请求之间引用。用户ID不会更改,-aId后缀将允许您保留会话中的内容。

修改 好的,所以你想让它在所有用户,会话等全球可用...

// assuming an array has already been set in cache key 'request-ids'...
$id = $request->id;
Cache::forever('request-ids', array_push($id,Cache::get('request-ids')));

https://laracasts.com/discuss/channels/laravel/is-it-possible-to-share-cache-between-users