如何从数据库返回一次并存储在Laravel的内存中

时间:2018-06-17 15:04:51

标签: php laravel laravel-5.6

我想做什么:

从数据库返回一堆行,转换为存储在内存中的数组,并使整个项目中的该数组可见,以便其他控制器可以读取它。我的功能很简单:

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错误。那么,最佳实践/方法是什么?

1 个答案:

答案 0 :(得分:1)

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

方法很简单,你进行一次数据库调用并缓存reaults,下次你点击相同的函数时,先检查缓存是否为空。如果它不为空,则返回缓存的结果。

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

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

此外,您还可以查看this链接,以便在Laravel中更有效地实施缓存。

希望这有帮助。