2017-05-30 22 views
1

我正在研究一个网站,计划在特定时间向学生显示教程内容。我正在使用Laravel Framework和Carbon软件包。 Lessons表中有两个字段。日期/时间字段和debut_timezone字段根据预定的日期和时间向学生展示教程。它工作正常,因为我使用Laravel雄辩中的WHERE子句。在Laravel显示基于浏览器时区的帖子

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

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

请帮忙吗?

回答

0

如果您有选项,您需要根据其IP地址(位置 - 国家)或其存储在数据库中的时区获取学生的时区。一旦你有学生的时区,你可以改变你的查询。

$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因为一个确切的比较是不正是你需要的。

+0

嗨@Sandeesh,感谢您的快速回复。不幸的是,我们没有一个学生选择他们的时区的领域。但是,我们确实存储学生的IP地址。 Carbon是否具有根据IP地址确定时区的功能? –

+0

@PrinceJ从IP获取时区并不那么容易。您需要通过api或包使用第三方服务来处理此问题。您可以搜索并根据您的要求找出最佳选择。有很多免费和付费服务可以帮助你。 – Sandeesh

相关问题