我將公共假期存盤在陣列中
$holiday["Christi Himmelfahrt"] = strtotime(" 39 day",easter_date($year));
$holiday["Pfingstmontag"] = strtotime(" 50 day",easter_date($year));
$holiday["Fronleichnam"] = strtotime(" 60 day",easter_date($year));
還有一些……
我正在考慮將它們存盤在表格中,因為我想添加更多國家/地區。這是一個好主意嗎?我想像這樣存盤它:
Schema::create('holidays', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->text('calculation');
$table->string('country',2)->default('AT');
$table->foreign('country')->references('iso_code')->on('countries');
$table->timestamps();
});
但是我怎么會得到這個計算出來的日期呢?再說一遍:這是個好主意嗎?
uj5u.com熱心網友回復:
您可能需要它決議的實際日期和用于計算它的演算法。您可以在
holiday表格中計算天數,例如:
| ID | 假日型別 ID | 假期日期 |
|---|---|---|
| 101 | 1 | 2022-01-01 |
| 102 | 2 | 2022-11-27 |
...連同holiday_type包含定義的表:
| ID | country_id | 姓名 | 月 | 日 | 表達 |
|---|---|---|---|---|---|
| 1 | 123 | 新年 | 1 | 1 | 空值 |
| 2 | 123 | Lorem Ipsum | 空值 | 空值 | 十一月的最后一個星期四 |
該運算式將是一個可由strtotime()/決議的字串new \DateTime()。語法非常強大,因此您可能不需要其他資訊。然后,您可以創建一個函式來進行實際計算并為您需要的每一行呼叫(在 cron 作業中或使用手動腳本):
public function calculateForYear(int $year): \DateTime
{
}
uj5u.com熱心網友回復:
創建新表
國名 country_name country_id
uj5u.com熱心網友回復:
例如,在您保存“39”的地方添加另一列 after_days 怎么樣,在查詢資料庫之后,您可以執行此操作
$holiday = Holiday::select('after_days')->where('id, '=', $id)->first();
strtotime(" ".$holiday->after_days." day", easter_date($year));
假設年份是靜態的,您不需要將其保存在資料庫中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/434996.html
