【问题标题】:Laravel - How can I load collection data into a table?Laravel - 如何将集合数据加载到表中?
【发布时间】:2020-02-21 20:30:42
【问题描述】:

我用一个名为 $group_months 的变量来存储我的数据,下面是我 dd($group_months) 时的情况。箭头前面的数字代表月份,后面的数字是时间。所以 10 = 十月

Collection {#187 ▼
  #items: array:4 [▼
    "Comp Time Used" => Collection {#292 ▼
      #items: array:3 [▼
        10 => "12:00:00"
        11 => "09:00:00"
        "01" => "12:00:00"
      ]
    }
    "Vacation Time Used" => Collection {#322 ▼
      #items: array:1 [▼
        11 => "04:00:00"
      ]
    }
    "Sick Time" => Collection {#325 ▼
      #items: array:1 [▼
        10 => "03:15:00"
      ]
    }
    "OT Accrued" => Collection {#316 ▼
      #items: array:1 [▼
        10 => "12:00:00"
      ]
    }
  ]
}

我想使用这些数据并填写我的表格,如下所示:

<table class="table table-striped table-sm">
            <thead>
              <tr>
                <th scope="col">Month</th>
                <th scope="col">Overtime Hours</th>
                <th scope="col">Compensation Hours</th>
                <th scope="col">Vacation</th>
                <th scope="col">Personal Hours</th>
                <th scope="col">Sick Hours</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <th scope="row">Jan</th>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td>
              </tr>
              <tr>
                <th scope="row">Feb</th>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
              </tr>
              <tr>
                <th scope="row">Mar</th>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
              </tr>
              <tr>
                <th scope="row">Apr</th>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
              </tr>
              <tr>
                <th scope="row">May</th>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
              </tr>
              <tr>
                <th scope="row">Jun</th>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
              </tr>
              <tr>
                <th scope="row">Jul</th>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
              </tr>
              <tr>
                <th scope="row">Aug</th>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
             </tr>
             <tr>
                <th scope="row">Sep</th>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
            </tr>
            <tr>
                <th scope="row">Oct</th>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
            </tr>
            <tr>
                <th scope="row">Nov</th>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
            </tr>
            <tr>
                <th scope="row">Dec</th>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
            </tr>
            </tbody>
 </table>

我不知道该怎么做,也许使用某种循环?感谢您的帮助。

编辑: 现在将集合存储为数组:

array:4 [▼
  "Comp Time Used" => array:3 [▼
    10 => "12:00:00"
    11 => "09:00:00"
    "01" => "12:00:00"
  ]
  "Vacation Time Used" => array:1 [▼
    11 => "04:00:00"
  ]
  "Sick Time" => array:1 [▼
    10 => "03:15:00"
  ]
  "OT Accrued" => array:1 [▼
    10 => "12:00:00"
  ]
]

【问题讨论】:

  • 您的 $group_months 是否总是包含 4 个值?假期,生病,OT,补偿?如果员工没有与该详细信息相关的任何内容,它只是返回一个空数组还是根本没有该参数的数组?
  • 是的,它将始终包含这 4 个值,如果他们没有时间条目记录到数据库中,比如说 OT,那么转储数据将不会显示 OT 的数组。
  • 有什么方法可以将它存储为数组而不是集合?也许使用 toArray() 方法?或者你的其余代码是否要求对象是一个集合?
  • 好的,我现在将它存储为一个数组。更新操作
  • 完美。最后一个问题。一个月会有多个条目吗?那么数组是否会包含 10 => '12' 和另一个 october 值?还是在将所有月份数据存储在数组中之前将其组合在一起?

标签: php laravel html-table eloquent


【解决方案1】:

这应该可以帮助您入门。在将控制器发送到视图之前,我会在控制器中合并所有时间。那会很容易。在这里,如果该月存在数组键,它将打印该月的值。如果它不存在,它不会抛出错误,因为array_key_exists 只会返回 false 并且什么都不做。

<table class="table table-striped table-sm">
            <thead>
              <tr>
                <th scope="col">Month</th>
                <th scope="col">Overtime Hours</th>
                <th scope="col">Compensation Hours</th>
                <th scope="col">Vacation</th>
                <th scope="col">Personal Hours</th>
                <th scope="col">Sick Hours</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <th scope="row">Jan</th>
                <td></td>
                <td></td>
                @if(array_key_exists(1, $group_months['Comp Time Used']))
                <td>{{$group_months['Comp Time Used'][1]</td>
                @else
                <td>No time off used</td>
                @endif
                <td></td>
                <td></td>
                <td></td>
              </tr>
              <tr>
                <th scope="row">Feb</th>
                <td></td>
                <td></td>
                @if(array_key_exists(2, $group_months['Comp Time Used']))
                <td>{{$group_months['Comp Time Used'][2]</td>
                @else
                <td>No time off used</td>
                @endif
                <td></td>
                <td></td>
                <td></td>
              </tr>
            </tbody>
 </table>

【讨论】:

  • 谢谢,我试试这个。感谢您的帮助。
  • 没问题。如果可行,请给我一个赞成票和“标记为正确”。一直很感激:D
  • 我还意识到我在 if 语句中遗漏了一个右括号,现在检查更新的代码。
  • 谢谢,我想我可以以此为基础!
猜你喜欢
  • 1970-01-01
  • 2013-07-22
  • 1970-01-01
  • 2017-11-09
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
  • 2020-01-18
  • 1970-01-01
相关资源
最近更新 更多