我在laravel中有以下查询:
$eventos = EventsData::join('tbl_users', 'tbl_users.id_user', '=', 'tbl_events.id_user')
->where('tbl_users.birth_date', '>=', date("m-d")) //my error
->where('tbl_events.year', '>=', date("Y"))
->get();
我有一个用户表(tbl_users
),其中包含每个用户的生日日期。和事件表(tbl_events),记录每个用户的周年纪念日。从而创建一个可以获得下一个生日的表格。
我的birth_date
是" yyyy-mm-dd"。表事件是year
。我想在当天和今年举办下一场活动。
即我认为周年纪念日必须大于当前的月和日,以及当年最高年份的活动
答案 0 :(得分:2)
将birth_date格式化为mm-dd,然后再将其与日期(' m-d')进行比较,如下所示:
$eventos = EventsData::join('tbl_users', 'tbl_users.id_user', '=', 'tbl_events.id_user')
->whereRaw("DATE_FORMAT( tbl_users.birth_date, '%m-%d') >= ?", array(date('m-d')))
->where('tbl_events.year', '>=', date("Y"))
->get();
如果您的tbl_events 没有完整的日期属性 ,您可以在2个查询中执行此操作:
首先,获取今年剩余的事件:
$events_this_year = EventsData::join('tbl_users', 'tbl_users.id_user', '=', 'tbl_events.id_user')
->whereRaw("DATE_FORMAT( tbl_users.birth_date, '%m-%d') >= ?", array(date('m-d')))
->where('tbl_events.year', '=', date("Y")) // Get remaining events this year
->get();
其次,获取明年的活动:
$events_following_year = EventsData::join('tbl_users', 'tbl_users.id_user', '=', 'tbl_events.id_user')
->where('tbl_events.year', '>', date("Y")) // Get events for upcoming years
->get();
然后合并它们
$eventos = $events_this_year->merge($events_following_year);