laravel5.1で、消費税や送料など基本的には固定値だが、数年内に一回だけ更新される値を、更新スケジュールで指定したい!
laravel5.1では、固定値はconfigフォルダ内で「任意のファイル名・任意のキー名」で保存するのが一般的。
1 2 |
// 設定値は簡単に取得できる $val = \Config::get(任意のファイル名.任意のキー名); |
ただ、消費税は平成31年(西暦2019年) 10月に10%に上がる予定(約3年後)
しかも、延期されたりもするので、このスケジュールや税額も設定画面から指定したい!
しょうがないので、管理画面経由でMySQLに設定された日時と値を見て、configファイルを毎日書き換えるのが一番楽そうだったので、実装してみた。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
public function handle() { // 消費税は平成31年(西暦2019年) 10月に10%に上がる予定(約3年後) //'tax' => 8, // デフォルトは8% // 毎日、DBの消費税の値で上書きする(本日以前で一番新しい日付の設定を使う) $tax_query = Tax::query(); $tax = $tax_query->whereDate('operation_date', '<=', date('Y-m-d')) ->orderby('operation_date', 'desc') ->first(); $tax_rate = $tax->tax_rate; // config/cart.phpファイルを読み込む $config_tax = file_get_contents(config_path() ."/cart.php"); $tax_pattern = "/'tax' => [0-9]+,/"; // 消費税の設定文字列 $tax_replacement = sprintf("'tax' => %d,", $tax_rate); // 置き換える文字列 // 置換したテキストをファイルに上書きする $tax_replaced_config = preg_replace($tax_pattern, $tax_replacement, $config_tax); file_put_contents(config_path() ."/cart.php", $tax_replaced_config); // Configキャッシュを更新 echo shell_exec( 'php artisan config:cache' ); return ; } |
毎日、更新しないで、値を見比べて違っていたら上書きするって処理にした方がいいな、コレ。