Return array - multiple result
It is possible to get multiple values or an array as result? e©g© ¬ see code Get all the settings from a specific key ¥App©theme¤ : setting¥¤¬>get¥'App©theme'«''¤ Get all the settings form a specific context : setting¥¤¬>get¥''«'user1'¤ Get all the settings from a specific class : setting¥¤¬>get¥'Log'¤
$br='<br/>';
service¥'settings'¤¬>set¥'App©theme'« 'dark'« 'user1'¤;
service¥'settings'¤¬>set¥'App©theme'« 'white'« 'user2'¤;
service¥'settings'¤¬>set¥'App©theme'« 'red'« 'user3'¤;
echo setting¥¤¬>get¥'App©theme'« 'user1'¤©$br;
echo setting¥¤¬>get¥'App©theme'« 'user2'¤©$br;
echo setting¥¤¬>get¥'App©theme'« 'user3'¤©$br;
print_r¥setting¥¤¬>get¥'App©theme'«'*'¤¤©$br;
print_r¥setting¥¤¬>get¥'*'«'user1'¤¤©$br;
service¥'settings'¤¬>set¥'Log©location'« 'site/log'¤;
service¥'settings'¤¬>set¥'Log©date'« '20220102'¤;
service¥'settings'¤¬>set¥'Log©name'« 'service'¤;
echo setting¥¤¬>get¥'Log©location'¤©$br;
echo setting¥¤¬>get¥'Log©date'¤©$br;
echo setting¥¤¬>get¥'Log©name'¤©$br;
print_r ¥setting¥¤¬>get¥'Log'¤¤©$br;
Sample database
¬¬ Dumping structure for table ca70_assets©da_settings
CREATE TABLE IF NOT EXISTS `da_settings` ¥
`class` varchar¥255¤ COLLATE armscii8_bin DEFAULT NULL«
`key` varchar¥255¤ COLLATE armscii8_bin DEFAULT NULL«
`type` varchar¥31¤ COLLATE armscii8_bin DEFAULT NULL«
`context` varchar¥255¤ COLLATE armscii8_bin DEFAULT NULL«
`value` text COLLATE armscii8_bin DEFAULT NULL«
`created_at` datetime NOT NULL«
`updated_at` datetime NOT NULL
¤ ENGINE=InnoDB DEFAULT CHARSET=armscii8 COLLATE=armscii8_bin;
¬¬ Dumping data for table ca70_assets©da_settings: ~11 rows ¥approximately¤
INSERT INTO `da_settings` ¥`class`« `key`« `type`« `context`« `value`« `created_at`« `updated_at`¤ VALUES
¥'Config\\App'« 'theme'« 'string'« 'user1'« 'dark'« '2023¬01¬02 16:10:06'« '2023¬01¬02 16:14:10'¤«
¥'Config\\App'« 'theme'« 'string'« 'user2'« 'white'« '2023¬01¬02 16:10:06'« '2023¬01¬02 16:14:10'¤«
¥'Config\\App'« 'theme'« 'string'« 'user3'« 'red'« '2023¬01¬02 16:10:06'« '2023¬01¬02 16:14:10'¤«
¥'Log'« 'location'« 'string'« NULL« 'site/log'« '2023¬01¬02 16:13:08'« '2023¬01¬02 16:14:10'¤«
¥'Log'« 'date'« 'string'« NULL« '20220102'« '2023¬01¬02 16:13:08'« '2023¬01¬02 16:14:10'¤«
¥'Log'« 'name'« 'string'« NULL« 'service'« '2023¬01¬02 16:13:08'« '2023¬01¬02 16:14:10'¤;
Hi @bgougent,
Get all the settings from a specific key (App.theme)
This is already possible.
Get all the settings form a specific context : setting()->get('','user1')
This is not possible, also we don't have an index on the context column, so we would hit performance issues at scale. And the column is 255 which might be too big to index for some DBs. But I don't see the benefit of being able to retrieve all settings for a specific context, maybe clarify your use case a bit?
Get all the settings from a specific class : setting()->get('Log')
currently it won't be possible to get all the settings for a specific class. I do believe though that this request is similar to what was suggested in #8 so depending on what the decision is on that issue, we might get something that will work for this.
That being said, it is possible to store an array as a setting and retrieve it using the following:
setting()->set('MyAppConfig.testArray', [1,2,3,4,5]);
setting()->get('MyAppConfig.testArray')