Laravel - Как я могу загрузить данные коллекции в таблицу? - PullRequest
1 голос
/ 25 октября 2019

Я храню свои данные в переменной $ 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"
  ]
]

1 Ответ

2 голосов
/ 25 октября 2019

Это должно помочь вам начать. Я бы объединил все время в контроллере, прежде чем отправлять его на просмотр. Это сделало бы это легко. Здесь, если ключ массива существует для этого месяца, он напечатает значение для этого месяца. Если он не существует, он не выдаст ошибку, потому что 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...