【问题标题】:Count Session rows in Laravel在 Laravel 中计算会话行数
【发布时间】:2014-11-27 23:01:26
【问题描述】:

我在控制器的 View::make() 方法中有这行代码:

'playersOnline' => count(Session::all())

我没有用户创建的 Session 类,因为我相信其他地方已经存在一个并且其中包含函数 all()。

会话表有 1 个条目,但是这行代码返回 3。 我要做的就是获取此表中的总行数。 我怎样才能改变这一点,以实现我的目标?

更新。我现在有了这个功能代码:

$playersOnline = DB::table('sessions') -> select('*') -> count();

这将返回正确的数据。现在这样做有什么问题吗?

【问题讨论】:

    标签: php database session laravel


    【解决方案1】:

    你正在混合不同的东西:

    1. 用户定义的 Eloquent 模型与 Laravel 的会话类。
    2. 访问会话的 Laravel 会话类与使用 RDBMS 的数据库查询。

    会话

    count(Session::all())
    

    Laravel 中的Session 类用于访问PHP session。这个类有一个名为all() 的函数,它将返回会话中的所有数据,就像你可以在documentation 中看到的那样。在您的代码中,您对该命令的结果使用count() PHP 函数。

    数据库

    DB::table('sessions')->select('*')->count();
    

    您的第二个代码是使用 Laravel 的查询构建器进行的数据库查询。您从数据库中的sessions 表中选择所有行,然后使用您的数据库管理系统(例如 MySQL)对它们进行计数。

    口才

    使用 Eloquent ORM,您可以创建智能模型。有了这些,您可以创建实例,帮助您通过它们访问和操作数据库,借助 Eloquent 的方法,如 all(),它将像模型实例一样返回表的所有行。看看documentation

    【讨论】:

    • 我现在对事情有了更好的理解。我想我现在应该坚持使用查询生成器。我希望检查用户(不是登录的用户)是否正在运行数据库会话。用你提供的信息我怎么能做到这一点?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 2018-04-18
    • 2015-08-10
    相关资源
    最近更新 更多