我应该在 Laravel 5.7 中更好地使用 session() 或 collect() 辅助函数吗?

Posted

技术标签:

【中文标题】我应该在 Laravel 5.7 中更好地使用 session() 或 collect() 辅助函数吗?【英文标题】:Should I better use session() or collect() helper function in Laravel 5.7? 【发布时间】:2019-08-05 10:12:31 【问题描述】:

我已将数组数据存储在会话中,如下所示。

session(['my_key' => ['car' => 123, 'motor' => 45, 'boat' => 678]]);

要获取密钥,我可以执行以下操作:

$car_key = session('my_key.car');
$motor_key = session('my_key.motor');
$boat_key = session('my_key.boat');

或者我可以执行以下操作:

$my_keys = session('my_key');

$car_key = collect($my_keys)->get('car');
$motor_key = collect($my_keys)->get('motor');
$boat_key = collect($my_keys)->get('boat');

我不知道session()collect()->get() 函数如何处理array。在这种情况下,一种方法比另一种更好吗?还是没那么重要,连会话都存储大数据的数组?

【问题讨论】:

【参考方案1】:

collect() helper 用于创建集合。 在第二种方式中,您创建三个不同的集合,包含相同的集合数据。然后你通过每个集合的键获取数据。 colde 似乎是多余的,没有按应使用的方式使用。

使用session() 助手

【讨论】:

如果我这样做 $key_collect_object = collect($my_keys); $car_key = $key_collect_object->get('car'); $motor_key = $key_collect_object->get('motor'); $boat_key = $key_collect_object->get('boat'); session('my_key.boat') 还会更好吗?【参考方案2】:

视情况而定。

如果您想使用仅在集合中可用的方法,那么这将是一种完全有效的方法。更简单的方法是使用:

$myCollection = collect(session('my_key'));

这样您就可以只使用$myCollection->get('car') 等,而不是创建多个集合。

但是,如果您只想检索值并且对数组感到满意,则可以使用 session() 帮助器并正常返回数据。

【讨论】:

以上是关于我应该在 Laravel 5.7 中更好地使用 session() 或 collect() 辅助函数吗?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.7中的电子邮件验证语言文件

Laravel 5.7 处理来自 API 的电子邮件验证错误

4 个连接 + 3 个 where 子句的查询构建器正确语法(Laravel 5.7)

如何在 Laravel 5.7 和 Laravel Collective 中使用动作 [重复]

如何在 Laravel 测试中发布多维数组?

在 laravel 5.7 中偶尔会出现 419 错误