Как сделать Laravel Session Array Pu sh? - PullRequest
0 голосов
/ 17 февраля 2020

Я хочу сохранить записи, добавленные за последние 20 секунд сеанса. Я проверяю это с Ajax. Но самая последняя запись постоянно добавляется. Я не могу писать об этом. Я пытаюсь сессия :: тянуть на этот раз, {} звучит пусто в этом случае.

Вот пример кода;

$crm = \GuzzleHttp\json_decode($guzzle->getBody()->getContents(), true);

foreach($crm['list'] as $row) {
      if(Carbon::create($row['createdAt'])->add(2, 'minutes')->diffInSeconds() < 20) {
             Session::put('data', [$row]);
       }
 }

 return response()->json(Session::get('data'));

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Когда вы используете Session::put, вы переопределяете этот ключ в сеансе, поэтому у вас всегда будет последняя запись в массиве из одного элемента в сеансе.

Если вы хотите сохранить все записи в сеансе, вы должны подготовить данные, а затем поместить их в сеанс.

$data = [];

foreach($crm['list'] as $row) {
    if (Carbon::create($row['createdAt'])->add(2, 'minutes')->diffInSeconds() < 20) {
        $data[] =  $row;
    }
}

Session::put('data', $data);

return response()->json($data);

Об использовании сеанса

Как предложил Дилип Хирапара, если вы не используете эту информацию в другом месте, вам может не потребоваться полагаться на сеанс, а просто возвращать массив.

0 голосов
/ 17 февраля 2020

Определите массив и отправьте его в JSON вместо использования сеанса.

$data = array();
foreach($crm['list'] as $row) {
      if(Carbon::create($row['createdAt'])->add(2, 'minutes')->diffInSeconds() < 20) {
             $data[] =  $row;
       }
 }

 return response()->json($data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...