从设置 table 返回的日期的资源包装器格式
Format for resources wrapper for dates returned from Settings table
在 Laravel 6 应用程序中,我为从 Settings
table(name => value
对)返回的日期制作了资源包装器,但我得到的返回数据格式无效,不是对 name => value
.
我有控制器:
$settingsArray= [];
$settingValues= Settings::getSettingsList();
foreach( $settingValues as $nextSettingValue ) {
$settingsArray[$nextSettingValue->name] = $nextSettingValue->value;
}
\Log::info('$settingsArray ::');
\Log::info(print_r( $settingsArray, true ));
return (new SettingsCollection($settingsArray));
上面的日志输出是:
[2020-04-21 07:47:07] local.INFO: $settingsArray ::
[2020-04-21 07:47:07] local.INFO: Array
(
[site_name] => VTasks
[copyright_text] => © 2019 - 2020 All rights reserved
[site_heading] => Task 'em all
[backend_items_per_page] => 2
[tasks_per_page] => 4
[events_per_page] => 5
[events_demo_month] => 2018-02-01
)
并在 app/Http/Controllers/API/Admin/SettingsController.php:
class SettingsCollection extends ResourceCollection
{
public static $wrap = 'settings';
public function toArray($request)
{
\Log::info('SettingsCollection $request::');
\Log::info(print_r( json_encode($request), true ));
\Log::info('+++ SettingsCollection $this::');
\Log::info(print_r( json_encode($this), true ));
return $this->collection->transform(function($settings, $key){
\Log::info('+++ $settings:');
\Log::info(print_r( json_encode($settings), true ));
\Log::info('+++ $key:');
\Log::info(print_r( json_encode($key), true ));
return [
$key => $settings,
];
});
}
我在日志输出中看到:
[2020-04-21 07:47:07] local.INFO: "tasks_per_page"
[2020-04-21 07:47:07] local.INFO: +++ $settings:
[2020-04-21 07:47:07] local.INFO: "5"
[2020-04-21 07:47:07] local.INFO: +++ $key:
[2020-04-21 07:47:07] local.INFO: "events_per_page"
[2020-04-21 07:47:07] local.INFO: +++ $settings:
[2020-04-21 07:47:07] local.INFO: "2018-02-01"
[2020-04-21 07:47:07] local.INFO: +++ $key:
[2020-04-21 07:47:07] local.INFO: "events_demo_month"
[2020-04-21 07:47:07] local.INFO: {"site_name":{"site_name":"VTasks"},"copyright_text":{"copyright_text":"\u00a9 2019 - 2020 All rights reserved"},"site_heading":{"site_heading":"Task 'em all"},"backend_items_per_page":{"backend_items_per_page":"2"},"tasks_per_page":{"tasks_per_page":"4"},"events_per_page":{"events_per_page":"5"},"events_demo_month":{"events_demo_month":"2018-02-01"}}
并且返回的数据结构错误:https://imgur.com/a/CvIAAQO
哪种方法有效?
我想这就是您要找的:
class SettingsCollection extends ResourceCollection
{
public static $wrap = 'settings';
public function toArray($request)
{
return $this->collection->toArray();
}
在 Laravel 6 应用程序中,我为从 Settings
table(name => value
对)返回的日期制作了资源包装器,但我得到的返回数据格式无效,不是对 name => value
.
我有控制器:
$settingsArray= [];
$settingValues= Settings::getSettingsList();
foreach( $settingValues as $nextSettingValue ) {
$settingsArray[$nextSettingValue->name] = $nextSettingValue->value;
}
\Log::info('$settingsArray ::');
\Log::info(print_r( $settingsArray, true ));
return (new SettingsCollection($settingsArray));
上面的日志输出是:
[2020-04-21 07:47:07] local.INFO: $settingsArray ::
[2020-04-21 07:47:07] local.INFO: Array
(
[site_name] => VTasks
[copyright_text] => © 2019 - 2020 All rights reserved
[site_heading] => Task 'em all
[backend_items_per_page] => 2
[tasks_per_page] => 4
[events_per_page] => 5
[events_demo_month] => 2018-02-01
)
并在 app/Http/Controllers/API/Admin/SettingsController.php:
class SettingsCollection extends ResourceCollection
{
public static $wrap = 'settings';
public function toArray($request)
{
\Log::info('SettingsCollection $request::');
\Log::info(print_r( json_encode($request), true ));
\Log::info('+++ SettingsCollection $this::');
\Log::info(print_r( json_encode($this), true ));
return $this->collection->transform(function($settings, $key){
\Log::info('+++ $settings:');
\Log::info(print_r( json_encode($settings), true ));
\Log::info('+++ $key:');
\Log::info(print_r( json_encode($key), true ));
return [
$key => $settings,
];
});
}
我在日志输出中看到:
[2020-04-21 07:47:07] local.INFO: "tasks_per_page"
[2020-04-21 07:47:07] local.INFO: +++ $settings:
[2020-04-21 07:47:07] local.INFO: "5"
[2020-04-21 07:47:07] local.INFO: +++ $key:
[2020-04-21 07:47:07] local.INFO: "events_per_page"
[2020-04-21 07:47:07] local.INFO: +++ $settings:
[2020-04-21 07:47:07] local.INFO: "2018-02-01"
[2020-04-21 07:47:07] local.INFO: +++ $key:
[2020-04-21 07:47:07] local.INFO: "events_demo_month"
[2020-04-21 07:47:07] local.INFO: {"site_name":{"site_name":"VTasks"},"copyright_text":{"copyright_text":"\u00a9 2019 - 2020 All rights reserved"},"site_heading":{"site_heading":"Task 'em all"},"backend_items_per_page":{"backend_items_per_page":"2"},"tasks_per_page":{"tasks_per_page":"4"},"events_per_page":{"events_per_page":"5"},"events_demo_month":{"events_demo_month":"2018-02-01"}}
并且返回的数据结构错误:https://imgur.com/a/CvIAAQO
哪种方法有效?
我想这就是您要找的:
class SettingsCollection extends ResourceCollection
{
public static $wrap = 'settings';
public function toArray($request)
{
return $this->collection->toArray();
}