diff options
| author | Greg Roach <fisharebest@webtrees.net> | 2019-01-18 16:29:17 +0000 |
|---|---|---|
| committer | Greg Roach <fisharebest@webtrees.net> | 2019-01-18 16:29:17 +0000 |
| commit | 83c7613e024616d597b3e3682d8f3c4984bbfd8d (patch) | |
| tree | aa3e1b2ee1cf3fb1a8566172d41b46473f9a3d0f | |
| parent | 5cdfbae86036fb027736ced050ffb4c2dfb3d257 (diff) | |
| download | webtrees-83c7613e024616d597b3e3682d8f3c4984bbfd8d.tar.gz webtrees-83c7613e024616d597b3e3682d8f3c4984bbfd8d.tar.bz2 webtrees-83c7613e024616d597b3e3682d8f3c4984bbfd8d.zip | |
Use cache to reduce DB queries on block_setting table
| -rw-r--r-- | app/Module/AbstractModule.php | 16 | ||||
| -rw-r--r-- | app/User.php | 18 |
2 files changed, 20 insertions, 14 deletions
diff --git a/app/Module/AbstractModule.php b/app/Module/AbstractModule.php index d3d5abe110..86bce4084a 100644 --- a/app/Module/AbstractModule.php +++ b/app/Module/AbstractModule.php @@ -56,18 +56,20 @@ abstract class AbstractModule * * @param int $block_id * @param string $setting_name - * @param string $default_value + * @param string $default * * @return string */ - public function getBlockSetting(int $block_id, string $setting_name, string $default_value = ''): string + public function getBlockSetting(int $block_id, string $setting_name, string $default = ''): string { - $setting_value = DB::table('block_setting') - ->where('block_id', '=', $block_id) - ->where('setting_name', '=', $setting_name) - ->value('setting_value'); + $settings = app('cache.array')->rememberForever('block_setting' . $block_id, function () use ($block_id) { + return DB::table('block_setting') + ->where('block_id', '=', $block_id) + ->pluck('setting_value', 'setting_name') + ->all(); + }); - return $setting_value ?? $default_value; + return $settings[$setting_name] ?? $default; } /** diff --git a/app/User.php b/app/User.php index f94dd350be..7c9bdd3de5 100644 --- a/app/User.php +++ b/app/User.php @@ -558,14 +558,18 @@ class User */ public function getPreference($setting_name, $default = ''): string { - if (empty($this->preferences) && $this->user_id !== 0) { - $this->preferences = DB::table('user_setting') - ->where('user_id', '=', $this->user_id) - ->pluck('setting_value', 'setting_name') - ->all(); - } + $preferences = app('cache.array')->rememberForever('user_setting' . $this->user_id, function () { + if ($this->user_id) { + return DB::table('user_setting') + ->where('user_id', '=', $this->user_id) + ->pluck('setting_value', 'setting_name') + ->all(); + } else { + return []; + } + }); - return $this->preferences[$setting_name] ?? $default; + return $preferences[$setting_name] ?? $default; } /** |
