在Laravel中根据查看器时区显示帖子

时间:2017-05-30 18:22:35

标签: php mysql laravel laravel-5 laravel-5.4

我正在一个网站上工作,该网站计划在特定时间向学生展示教程内容。我使用的是Laravel Framework和Carbon软件包。我在课程表中有两个字段。日期/时间字段和debut_timezone字段,根据计划的日期和时间向学生显示教程。它工作正常,因为我在Laravel Eloquent中使用了WHERE子句。

// For example: 
$student_id = \Auth::user()->id;
$lessons = Lesson::where('student_id', $student_id)->where('debut_date', Carbon::now())->get();

如何使用时区字段,以便它只根据学生的时区向学生显示教程。例如,东海岸的学生可以在西海岸学生前3小时观看他们的课程,依此类推。在这种情况下,当我们走向全球时,亚洲的学生将能够在美国学生面前查看他们的课时,等等。

请帮忙吗?

1 个答案:

答案 0 :(得分:0)

如果您有选项,您需要根据他们的IP地址(位置 - 国家/地区)或他们在db中存储的时区来获取学生的时区。获得学生的时区后,您可以将查询更改为此。

$student_id = auth()->id();
$student_tz = ''; // timezone based on ip or other condition.
$lessons = Lesson::where('student_id', $student_id)
    ->whereDate('debut_date', Carbon::now($student_tz))
    ->get();

您还应该使用whereDate代替where,因为准确的比较并不完全符合您的需要。