Ich habe einige Beispieldaten in einer einzigen MySQL-Tabelle, die Felder schedule_id, day_number, staff_id, shift_start_time, shift_end_time, hours_worked
hat.Restrukturierung von Daten in Laravel eloquent von einzelnen MySQL-Tabelle
Ich bin immer noch relativ unerfahren, wenn es um MVC und Laravel Entwicklung geht, also suche ich nach einer Anleitung, wie man dieses Problem am besten löst.
Was ich brauche ist zu tun, um die Daten in einer Tabelle angezeigt werden, so dass es unter ähnlich formatiert ist: -
<table style="border: 1px solid black; text-align: center">
<tr>
<th>Staff ID</th>
<th>Day 0</th>
<th>Day 1</th>
<th>Day 2</th>
<th>Day 3</th>
<th>Day 4</th>
<th>Day 5</th>
<th>Day 6</th>
</tr>
<tr>
<td>21</td>
<td>12:00:00 - 17:00:00</td>
<td>12:00:00 - 19:00:00</td>
<td>12:00:00 - 13:00:00</td>
<td></td>
<td>12:00:00 - 15:00:00</td>
<td>12:00:00 - 17:00:00</td>
<td>12:00:00 - 16:00:00</td>
</tr>
<tr>
<td>24</td>
<td></td>
<td></td>
<td>11:00:00 - 19:00:00</td>
<td>11:00:00 - 13:00:00</td>
<td>10:00:00 - 15:00:00</td>
<td>12:00:00 - 17:00:00</td>
<td>12:00:00 - 16:00:00</td>
</tr>
<tr>
<td>32</td>
<td>11:00:00 - 19:00:00</td>
<td>11:00:00 - 13:00:00</td>
<td>10:00:00 - 15:00:00</td>
<td>12:00:00 - 17:00:00</td>
<td>12:00:00 - 16:00:00</td>
<td></td>
<td></td>
</tr>
</table>
Mein Verständnis ist, dass alle Daten, Transformation oder Filterung nehmen soll Platz in den Modellen (in Übereinstimmung mit den Reglern schlank halten). Mein erster Versuch war, alle Daten abzurufen und @foreach
und @while
Schleifen in der Blade-Vorlage zu schreiben, aber dies führte zu einer Unordnung des Codes und ist nicht wartbar und schwer für zukünftige Zwecke zu modifizieren.
Was soll ich im Hinblick auf Best Practices tun? Einige der Optionen, die ich in Betracht gezogen habe, waren die Schaffung einer weiteren Tabelle, die mir in Zukunft Flexibilität auf Kosten der Komplexität ermöglichen könnte. Die andere Option, die ich in Betracht gezogen habe, war die Verwendung der eingebauten Methoden von Eloquent für groupBy()
auf der staff_id
zuerst, und erstellen Sie ein assoziatives Array mit den Daten im Format ähnlich dem, was ich in meiner Blade-Vorlage erstellen muss.
Nur ein bisschen Kritik. Wenn 'hours_worked' einfach basierend auf shiftstart - shiftstart berechnet wird, sollte es keine Spalte in Ihrer Tabelle sein, da dies zu einer Aktualisierung von Anomalien führen kann. – apokryfos