PHP Laravel: Ausgabe von Konten inkl. Buchungen

Dsimon24

Lieutenant
Registriert
Aug. 2016
Beiträge
595
Hallo zusammen,

ich bräuchte mal einen Denkansatz von euch...

In Laravel erstelle ich innerhalb eines Controllers eine Funktion, die folgendes macht:
Sie läd aus der Datenbank die jeweils zum User angelegten Konten. Anschließend läd
sie in einer neuen DB-Abfrage die jeweiligen Buchungen der entsprechenden Konten.

Sagen wir mal, User mit der ID 1 hat drei Konten angelegt:
  • Commerzbank (mit 2 Wochungen)
  • Sparkasse (mit 3 Buchungen)
  • DiBa (mit 6 Buchungen)

Das Ganze möchte ich dann im View folgendermaßen darstellen:

- Commerzbank
-> Buchung 1
-> Buchung 2
-> Buchung 3

- Sparkasse
-> Buchung 1
-> Buchung 2
...

Leider bekomme ich das mit den Arrays und den Schleifen
nicht so richtig umgesetzt. Anbei mein Code:

Ausschnitt aus dem Controller:
PHP:
public function alleBuchungen()
{

    // Kontenbezeichnungen
    $accBez = DB::table('konten')
        ->where('uid', '=', Auth::user()->id)->get();

    // Alle Buchungen ausgeben
    $i = 0;
    foreach ($accBez as $aBez) {
        $buchungen[$i] = DB::table('buchungen')
            ->where('acc', '=', $aBez)
            ->where('uid', '=', Auth::user()->id)
            ->where('datum', '<=', date('Y-m-d'))
            ->orderBy('datum', 'desc')
            ->get();
        $i++;
    }

    return view('meineBuchungen', compact('buchungen', 'accBez'));
}

Ausschnitt aus dem View:
HTML:
@foreach($accBez as $accName) // Accounts
<h2>{{ $accName->bezeichnung }}</h2>
@endforeach

<table width="100%" border="1">
  <tr>
    <th>Datum</th>
    <th>Bezeichnung</th>
    <th>Betrag</th>
  </tr>
    @php
    $i = 0;
    @endphp
    @foreach($buchungen[$i] as $buchung)
    <tr>
      <td>{{ date('d.m.Y', strtotime($buchung->datum)) }}</td>
      <td>{{ $buchung->bezeichnung }}</td>
      <td>{{ number_format($buchung->betrag,2) }} €</td>
    </tr>
    @php
    $i++;
    @endphp
    @endforeach
</table>

Ich glaube, dieser Ansatz ist aber alles andere als richtig!?
Wie kann ich sowas noch besser und richtig realisieren?

VG
 
Du hast ein 2D-Array, kann das sein? {{ ... }}

Liefert „get()“ in Zeile 16 ein Array zurück? Alter, wie ich das dynamische Typisieren hasse :grr::skull_alt:
 
Auch wenn ich das Framework nicht kenne und meine PHP Zeit lange vorbei ist, du hast die erste foreach Schleife direkt nach der Ausgabe des Titels beendet. Unter Compact kann ich mir eben gar nichts vorstellen, außer das er das zusammenwürfelt. Wenn du dann deine Buchungen ausgeben willst musst du auf Account prüfen. Die foreach Schleife schaut auch etwas seltsam aus, der Index irritiert mich.

besser wäre es das ganze zu einem 2 dimensionalen Array umzubauen.

du könntest auch über ein Join nachdenken und nur die Spalten selektieren die du wirklich benötigst. Und wenn du dabei bist von Templates wegkommen und mit REST arbeiten.
 
rlchampion schrieb:
Du hast ein 2D-Array, kann das sein? {{ ... }}

Liefert „get()“ in Zeile 16 ein Array zurück? Alter, wie ich das dynamische Typisieren hasse :grr::skull_alt:

Ja, darin erhalte ich ein Array welches ich im Template mit einer foreach-Schleife
ausgeben könnte.

Aber wenn ich ein 3D-Array mache, wie kann ich es mit Compact übergeben?

Testa2014 schrieb:
Und wenn du dabei bist von Templates wegkommen und mit REST arbeiten.

Wo würde denn genau der Vorteil liegen, wenn ich mit REST
arbeiten würde?
 
Dsimon24 schrieb:
Ja, darin erhalte ich ein Array welches ich im Template mit einer foreach-Schleife
ausgeben könnte.

Aber wenn ich ein 3D-Array mache, wie kann ich es mit Compact übergeben?



Wo würde denn genau der Vorteil liegen, wenn ich mit REST
arbeiten würde?
Mach en Model übertrage das per JSON. Dann genügt dir ein 1D-Array.
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben