master

laravel/framework

Last updated at: 29/12/2023 09:20

RetrievesMultipleKeys.php

TLDR

This file provides the RetrievesMultipleKeys trait, which contains two methods for retrieving and storing multiple items in the cache.

Methods

many

Retrieve multiple items from the cache by key. Items not found in the cache will have a null value.

Parameters:

  • keys (array): An array of keys to retrieve.

Returns:

  • array: An array of retrieved items.

putMany

Store multiple items in the cache for a given number of seconds.

Parameters:

  • values (array): An array of key-value pairs to store.
  • seconds (int): The number of seconds to store the items in the cache.

Returns:

  • bool: True if all items were successfully stored in the cache, false otherwise.
<?php

namespace Illuminate\Cache;

trait RetrievesMultipleKeys
{
    /**
     * Retrieve multiple items from the cache by key.
     *
     * Items not found in the cache will have a null value.
     *
     * @param  array  $keys
     * @return array
     */
    public function many(array $keys)
    {
        $return = [];

        $keys = collect($keys)->mapWithKeys(function ($value, $key) {
            return [is_string($key) ? $key : $value => is_string($key) ? $value : null];
        })->all();

        foreach ($keys as $key => $default) {
            $return[$key] = $this->get($key, $default);
        }

        return $return;
    }

    /**
     * Store multiple items in the cache for a given number of seconds.
     *
     * @param  array  $values
     * @param  int  $seconds
     * @return bool
     */
    public function putMany(array $values, $seconds)
    {
        $manyResult = null;

        foreach ($values as $key => $value) {
            $result = $this->put($key, $value, $seconds);

            $manyResult = is_null($manyResult) ? $result : $result && $manyResult;
        }

        return $manyResult ?: false;
    }
}