如何从数据库 return 一次并存储在内存中 Laravel

How to return once from database and store in memory in Laravel

我想做的事情:

Return 数据库中的一堆行,转换为存储在内存中的数组,并使该数组在整个项目中可见,例如其他控制器可以读取它。我的功能就这么简单:

class BoardController extends Controller
{

/*
 * returns something like
 * ['name' => 'description', 
    ...
    ]
 * 
 * */
public static function getAll()
{
    $boards = Board::orderBy('ordem')->get();

    $retorno = array();

    foreach($boards as $b)
    {
        $retorno[$b->sigla] = $b->nome;
    }

    return $retorno;
}
}

如果我继续调用 BoardController::getAll(),它将再次从数据库中读取。我还尝试在 config 文件中将此调用转换为变量并将其返回到那里,但是 laravel 给了我一个 500 错误。那么,什么是最好的 practice/way 呢?

如果您不想每次都调用数据库,那么这里可以遵循的最佳方法是使用缓存并缓存结果。

方法很简单,调用一次数据库并缓存结果,下次调用相同的函数时首先检查缓存是否为空。如果它不为空,则 return 缓存结果。

请记住,缓存有时间限制,否则如果您 change/update 数据库中的任何内容,那么您将必须清除已存储的缓存。

Laravel 有一些缓存结果的功能。可以看到Here.

此外您还可以查看this link以更有效地实现缓存在Laravel。

希望对您有所帮助。