Php LARAVEL ORM:为每个用户选择不同的日期
我有一张名为“访客”的桌子:Php LARAVEL ORM:为每个用户选择不同的日期,php,mysql,laravel,laravel-5.4,Php,Mysql,Laravel,Laravel 5.4,我有一张名为“访客”的桌子: visitors : (id , user_id , ip , created_at , route , refer ) 我在包装链接的中间件中为每个页面访问存储一行 我想在我的管理面板中显示这些,但是你可以想象有很多,所以我想为每个用户显示每天的第一次访问,就像我在db中看到的一样 1 , 356 , 127.0.0.1 , 2017-08-30 22:41:49 1 , 356 , 127.0.0.1 , 2017-08-30 22:50:49 1 , 35
visitors : (id , user_id , ip , created_at , route , refer )
我在包装链接的中间件中为每个页面访问存储一行
我想在我的管理面板中显示这些,但是你可以想象有很多,所以我想为每个用户显示每天的第一次访问,就像我在db中看到的一样
1 , 356 , 127.0.0.1 , 2017-08-30 22:41:49
1 , 356 , 127.0.0.1 , 2017-08-30 22:50:49
1 , 356 , 127.0.0.1 , 2017-08-30 22:53:49
1 , 356 , 127.0.0.1 , 2017-08-30 23:11:49
1 , 400 , 127.0.0.1 , 2017-08-30 23:50:49
查询结果应该是
1 , 356 , 127.0.0.1 , 2017-08-30 22:41:49
1 , 356 , 127.0.0.1 , 2017-08-30 23:11:49
1 , 400 , 127.0.0.1 , 2017-08-30 23:50:49
所以我想要的是
DISTINCT(DATE(created_at))
但这将影响所有用户。。我希望它能影响每个用户
这很复杂,我不知道我该怎么做我想你可以这样做:
DB::table('visitors')
->distinct('created_at')
->orderBy('created_at', 'asc')
->get();
另一种方法是为
用户
实体添加额外字段,如首次访问
,如果它很重要我想您可以尝试以下方法:
DB::table('visitors')
->distinct('created_at')
->orderBy('created_at', 'asc')
->get();
另一种方法是为
用户
实体设置附加字段,如首次访问
如果重要如前所述,您希望使用MIN
功能获取他们第一次登录时的信息,使用分组依据
根据用户id对其进行分组:
DB::table('visitors')
->select(['user_id', DB::raw('MIN(created_at)')])
->groupBy('user_id')
->get();
如果需要,可以在其他列中添加,但键是
DB::raw('MIN(created_at)
,它将获得每个用户最早创建的时间戳。DB::raw
将完全按照您指定的方式传入该字符串。如上所述,您希望使用MIN
函数获取他们第一次登录的时间,使用groupby
按用户id对其进行分组:
DB::table('visitors')
->select(['user_id', DB::raw('MIN(created_at)')])
->groupBy('user_id')
->get();
如果需要,可以在其他列中添加,但键是DB::raw('MIN(created_at)
,它将获得每个用户最早创建的时间戳。DB::raw
将完全按照您指定的方式传入该字符串。试试这个
DB::table('visitors')->select('id','user_id','ip','created_at')->groupBy(DB::raw('DATE(created_at)'))->groupBy('user_id')->get();
这将在一天内提供唯一的用户。试试这个
DB::table('visitors')->select('id','user_id','ip','created_at')->groupBy(DB::raw('DATE(created_at)'))->groupBy('user_id')->get();
这将在一天内提供唯一的用户。查看
MIN
和分组依据。无DISTINCT
需要查看MIN
和分组依据
。没有DISTINCT
needthanx,但这将不会影响用户基本上只是第一次访问他们,为首次访问添加另一个字段将是planB@hretic因此,您可以使用distinct
或min
和groupby
查询iThanx,但这不会影响用户基本上只是第一次访问他们,为首次访问添加另一个字段将是planB@hretic因此,您可以使用distinct
或min
和groupby
查询itthnx,但正如我所说,我希望每天为每个用户创建最早的。。我想这会给我最早的时间,不管是哪一天还是我弄错了?这是为了整体。如果您只需要当前日期,则添加->whereRaw('created_>=CURDATE()')
,这样它将获得当天登录的任何用户的第一次登录。另一方面,如果您需要每一天,则添加另一个groupBy->groupBy(DB::raw('date(created_at))
thnx,但正如我所说的,我希望每天为每个用户创建最早的。。我想这会给我最早的时间,不管是哪一天还是我弄错了?这是为了整体。如果您只需要当前日期,则添加->whereRaw('created_>=CURDATE()')
,这样它将获得当天登录的任何用户的首次登录。另一方面,如果您需要每一天,则添加另一个groupBy->groupBy(DB::raw('date(created_at))