Laravel 5.4-缓存阵列

Laravel 5.4-缓存阵列,laravel,laravel-5,laravel-5.4,Laravel,Laravel 5,Laravel 5.4,我试图缓存一个数组,但由于某些原因,没有添加任何内容。代码如下: public static function getEmployees() { if(!Cache::has('employees')): $data = ['urlPath' => '/employees/directory']; $params = ['fields' => 'jobTitle'];

我试图缓存一个数组,但由于某些原因,没有添加任何内容。代码如下:

public static function getEmployees()
    {

        if(!Cache::has('employees')):

            $data      = ['urlPath' => '/employees/directory'];

            $params    = ['fields' => 'jobTitle'];

            $employees = API::callAPI('GET', $data, $params);

            Cache::putMany($employees, 1440);

        endif;

        return Cache::get('employees');

    }
当我试图获取缓存值(数组)时,我得到的是空值:

dd(Cache::get('employees'));
这是我要存储的一个数组:

array:2 [▼
  "fields" => array:16 [▶]
  "employees" => array:257 [▶]
]
(我使用db存储)

您使用的
putMany()
错误。我打赌只要使用常规的
put()
,就足够了:

但是,如果您想要
putMany()
,则需要首先准备源数组,而您没有这样做:

$data = [
    'fields' => whateverItComesFrom(),
    'employees' => API::callAPI('GET', $data, $params),
];
Cache::putMany($data, 1440);
编辑

正如其他用户在评论中提到的,除了不正确的使用之外,DB存储也可能导致问题,因为根据您要缓存的数据的大小,它可能只是超出了数据库类型限制,即。
BLOB
仅为65535字节(64KB)(这在大多数情况下足够了,但数组中有200多个条目…)
MEDIUMBLOB
为16777215字节(16 MB),而
LONGBLOB
为4294967295字节(4 GB),因此可能也需要检查该方面,并在需要时更改列类型。

我发现了问题-文本字段的限制是缓存无法工作的原因。将类型更改为LONGBLOB(感谢num8er的建议),现在它可以工作了。

我尝试了这个,但仍然得到null(并且没有任何内容存储到db中)。请确保从
callAPI()
@timliews-I set CACHE\u DRIVER=数据库中获取任何数据。我刚刚尝试将文件作为存储,这是可行的。可能数组对于文本字段来说太大了?@num8er-文本限制导致了问题。@Sasha change field type
ALTER TABLE cacheTable MODIFY fieldName LONGBLOB
$data = [
    'fields' => whateverItComesFrom(),
    'employees' => API::callAPI('GET', $data, $params),
];
Cache::putMany($data, 1440);