Laravel获取具有特定日期和月份的行

时间:2015-06-30 14:26:36

标签: php mysql date laravel eloquent

我在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。我想在当天和今年举办下一场活动。

即我认为周年纪念日必须大于当前的月和日,以及当年最高年份的活动

1 个答案:

答案 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);