首页 > 解决方案 > 如何在 laravel 中转换特定的 fromat

问题描述

[ { "from": "2021/05/10", "to": "2021/05/14" }, { "from": "2021/05/17", "to": "2021/05/20" }]

进入

1 "2021/05/10"
2 "2021/05/14"
3 "2021/05/17"
4 "2021/05/20"

所以它在数据库中看起来像这样。ofc 可以有两个以上

$holiday = new Utility;

$h = $request->get('holiday'); -> [ { "from": "2021/05/10"..

标签: phpdatabaselaraveldateeloquent

解决方案


假设它是一个集合,您可以只使用该collapse()方法。

$h = $request->get('holiday'); 
/*
Illuminate\Support\Collection {
   all: [
       Utility {
           +"from": "2021/05/10",
           +"to": "2021/05/14",
       },
       Utility {
           +"from": "2021/05/17",
           +"to": "2021/05/20",
       },
   ],
}
*/
$h->map(function ($utility) { return [$utility->from, $utility->to]; });
/*
Illuminate\Support\Collection {
   all: [
       [
           "2021/05/10",
           "2021/05/14",
       ],
       [
           "2021/05/17",
           "2021/05/20",
       ],
   ],
}
*/
$h->map(function ($utility) { return [$utility->from, $utility->to]; })
  ->collapse();
/* 
Illuminate\Support\Collection {
   all: [
       "2021/05/10",
       "2021/05/14",
       "2021/05/17",
       "2021/05/20",
   ],
}
*/
$h->map(function ($utility) { return [$utility->from, $utility->to]; })
  ->collapse()
  ->all();
/* 
[
    "2021/05/10",
    "2021/05/14",
    "2021/05/17",
    "2021/05/20",
],
*/

如果$h = $request->get('holiday');不是 Collection 而是像下面这样的 json 字符串,

[{"from":"2021/05/10","to":"2021/05/14"},{"from":"2021/05/17","to":"2021/05/20"}]

您可以将其转换为 Collectioncollect(json_decode($h))并执行相同操作

->map(...)->collapse()->all()序列。


如果您想在刀片文件中回显这些值(带有编号),您可以这样做:

@foreach ($h as $index => $value)
    {{ $index + 1 }} {{ $value }}<br>
@endforeach

推荐阅读