根据天数更改主页或结果

时间:2019-05-18 08:04:18

标签: php laravel

我有两个表,天和职位。
天数表

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天再次开始。我该怎么办?

2 个答案:

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