我有两个表,天和职位。
天数表
id | day
----------
1 | Day1
2 | Day2
3 | Day3
4 | Day4
5 | Day5
6 | Day6
7 | Day7
8 | Day8
9 | Day9
10 | Day10
11 | Day11
12 | Day12
帖子表
id | day | posts
---------------------------
1 | 1 | Day1Text
2 | 1 | Day1Text
1 | 1 | Day1Text
2 | 2 | Day2Text
1 | 2 | Day2Text
2 | 3 | Day3Text
1 | 4 | Day4Text
2 | 5 | Day5Text
我有12天,每天都有不同的帖子,此更改每天都是上午10:00,例如今天(第1天),并且只会出现第一天的帖子。明天第二天上午10.00将出现帖子。当第12天结束时,此循环将返回到开始并在第1天再次开始。我该怎么办?
答案 0 :(得分:1)
首先,您想知道随着时间的流逝如何循环发布这些帖子。作为输入,我们至少需要12个不同的日期,因此我们可以使用月份或年份的当前日期。如果我们采用一年中的某一天:
Carbon::now()->dayOfYear //e.g. int(137)
我们现在可以根据帖子数来计算其mod,它将始终返回0到11之间的数字。如果加1,我们将得到1到12之间的数字。例如:
137 % 12 = 5 // 5 + 1 = 6
120 % 12 = 0 // 0 + 1 = 1
347 % 12 = 11 // 11 + 1 = 12
这时,我们知道每天需要显示什么帖子,但是我们无法控制应该开始显示的时间。 要解决此问题,一种方法是在您希望帖子更改时考虑日期更改,将两者对齐可以使事情变得更容易。由于我们不想偏移服务器时区,因此我们可以将选择的日期偏移10h,这意味着新的一天将在当天凌晨10点开始:
Carbon::now()->subHours(10)->dayOfYear
现在,我们可以使用生成的mod值来构建必要的查询以显示帖子。
答案 1 :(得分:0)
从外观上看,您实际上并不需要if语句,因此您可以使用englishDayOfWeek
getter或仅使用php的date format
即
$results = Post::where('Day', now()->englishDayOfWeek)->get()
或
$results = Post::where('Day', now()->format('l'))->get()