【问题标题】:Get the week start date and week end date from week number in raw query从原始查询中的周数获取周开始日期和周结束日期
【发布时间】:2020-03-22 21:37:51
【问题描述】:

!在将数组中的所有 id 分组后,从原始查询 #2 中的周数获取周开始日期和周结束日期

$test=DB::table('bookings')
->select([

     'bookings.organization_id',
     DB::raw('week(bookings.created_at) as week'), // this give me week number I need start date and end date starting date Sunday and end date Saturday 
     DB::raw('year(created_at) as year'),

按组织 ID 分组后的第二个我需要数组中的所有预订 ID 而不是字符串

// I try this but give like this "1,4,6,7,9"  I need ["1","4","6","7","9"]

DB::raw('group_concat(bookings.id) as bookings_id'), 

【问题讨论】:

  • 为什么不能迭代结果集并填充数组?
  • 两个问题 #1 将周数更改为开始日期和结束日期。我是 db raw 的新手,我需要代码才能理解。谢谢

标签: sql database laravel


【解决方案1】:

要获得一周的开始和结束,您可以使用:

$test=DB::table('bookings')
->select([
'bookings.organization_id',
  DB::raw('DATE(bookings.created_at   + INTERVAL (1 - DAYOFWEEK(bookings.created_at)) DAY) as start_date'),
  DB::raw('DATE(bookings.created_at + INTERVAL (7 - DAYOFWEEK(bookings.created_at)) DAY) as end_date')
])
->get();

第二个问题:

MySQL 没有array 数据类型的概念。

你需要将数据分解成一个数组,使用php这样的代码:

$bookingsIds = explode(',', $test->bookings_id);

【讨论】:

  • 怎么样 "DB::raw('week(bookings.created_at) as week'), // 这给了我周数我需要开始日期和结束日期开始日期星期日和结束日期星期六"