Beiträge von marvinrabe

    Morgen (Montag, 04. Januar) um 20 Uhr findet das erste deutschsprachige Laravel Meetup statt. Hier ist die Agenda: ?


    Um 20 Uhr treffen wir uns auf dem Discord-Server im #meetup Text-Channel: https://discord.gg/sggQqGm3BC


    Um 20:15 Uhr werden wir dort den Link für den YouTube Lifestream bekanntgeben. Wir versuchen zwei 15 Minuten und drei 5 Minuten Talks zu organisieren.


    Ab 21 Uhr finden Diskussionen auf Discord statt. Entweder im #meetup Text-Channel, oder in den bereitgestellten Mingling Voice Channels. Wir machen um 22 Uhr offiziell Schluss, wer mag kann aber auch länger bleiben.


    Falls du kein weiteres Meetup verpassen möchtest, dann folge doch einfach einen unserer Kanäle auf unserer Webseite: http://www.laravelphp.de/


    Selbstverständlich werden wir die Meetups in Zukunft auch immer hier ankündigen!

    Hallo Erik,


    willkommen im Forum.


    der Ansatz mit dem Zwischenspeichern der APIs ist nicht schlecht, da diese schließlich auch mal nicht erreichbar sein können. Ebenfalls dauern die Abfrage auch etwas länger, daher ist es besser die APIs nicht immer bei jedem Aufruf deiner API abzufragen.


    Queues brauchst du nicht unbedingt. Diese sind nur zum asynchronen abarbeiten von Aufgaben gedacht. Hier wahrscheinlich nicht nötig.


    Wie du vorgehen könntest:


    1. Konsolen Befehl erstellen, der die APIs abruft und irgendwie speichert (z.B. Cache oder in DB). Siehe dazu HTTP Anfragen.

    2. Für diesen Konsolen Befehl einen Scheduler erstellen, der die Daten regelmäßig im Hintergrund neu abruft (z.B. jede Viertelstunde). Siehe dazu Task Scheduling.

    3. Eine HTTP Route für deine API, die dann die Daten aus dem Cache oder DB ausgibt.


    Deine API würde dann nicht direkt von den anderen API abhängen. Wenn also die externen APIs langsam oder nicht erreichbar sind, wärest du immer noch in der Lage schnell die Daten zu liefern.


    Vielleicht hilft es dir.

    Hallo Max,


    willkommen im Forum.


    ich konnte bisher noch nicht mit Alpine oder LiveWire arbeiten, haben bisher Vue mit Inertia im Einsatz. Wie sind deine Erfahrungen mit TALL bei "Enterprise" Anwendungen? Gibt es Dinge die du nicht oder nur schwer umsetzen konntest.


    Zu NoSQL gebe ich dir den Hinweis, dass du einmal die Performance von JSONB in Postgres mit den NoSQL Datenbanken vergleichen solltest. Mir ist aufgefallen, dass Postgres (mit JSONB Daten) in einigen Fällen wesentlich performanter als Mongodb ist. Seitdem habe ich das Interesse an NoSQL (Document) Datenbanken völlig verloren. ArangoDB kenne ich persönlich nicht.


    Viele Grüße.

    Moin Shayan,


    schöne Sache! Ich hoffe du hast nach 6 Videos noch nicht aufgegeben ;-) .


    Nimm doch am besten "Laravel 7" aus den Thumbnails raus. Mittlerweile ist Laravel 8 schon da, aber deine Tutorials sind trotzdem noch relevant. Deswegen spielt die Version womöglich keine Rolle, sonder schreckt vielleicht nur ab.

    Hallo Matze,

    wie du sicherlich weißt bekommst du hiermit eine Collection:

    Code
    $results = Testee::find(1)->results()->get();
    // oder
    $results = Testee::find(1)->results;

    Collections verhalten sich ähnlich zu PHP Arrays, haben allerdings einige spannende Funktionen. Siehe Dokumentation.

    Du kannst auf die Auditors und Testsubject zugreifen wie du es mit Werten in einem PHP Array gewohnt bist. Zum Beispiel so:

    Code
    $results = Testee::find(1)->results;
    foreach($results as $result) {
        foreach($result->auditors as $auditor) {
            echo $auditor->firstname;
        }
    }

    Ähnlich dann auch mit den examinationsubjects.


    Zusätzlich stellt Laravel eine hasManyTrough Methode zur Verfügung. Siehe Dokumentation.

    Dazu musst du in der Testee Klasse folgendes definieren:

    Code
    class Testee extends Model
    {
    // Dein Code ...
    public function auditors()
    {
    return $this->hasManyThrough('App\Models\Result', 'App\Models\Auditor');
    }
    }

    Du kannst dann die Auditors eines Testees wie folgt abrufen.

    Code
    $testee = Testee::find(1);
    $auditors = $testee->auditors;
    // oder
    $auditors = $testee->auditors()->get();

    Du bekommst somit direkt die Auditors ohne zuerst dir alle Ergebnisse abzurufen. Ich weiß aber nicht ob das mit mehreren hintereinander geketteten Many-to-Many Beziehungen funktioniert. Das musst du ausprobieren.


    Ich hoffe ich konnte dir weiterhelfen.

    Hallo Joachim,

    da hast du zwei Möglichkeiten.


    1.) Die Spalte vom Datenbanksystem erst in die richtige Zeitzone bringen. Für MySQL wäre das so möglich:

    Code
    $query->whereYear(DB::raw("CONVERT_TZ(date,'UTC','MET')"), 2020);

    Aber Achtung: Der Spaltenname ist nicht vor SQL Injection geschützt. Wenn du MET durch eine Variable ersetzt, dann bitte darauf achten, dass nur gültige Werte gegeben werden können.


    2.) Manuell den Zeitraum abfragen, dazu Start und Enddatum in UTC mit Carbon generieren.

    Code
    $start= Carbon::create(2020, 1, 1, 0, 0, 0, 'Europe/Berlin')->setTimezone('UTC');
    $end= Carbon::create(2020, 12, 31, 23, 59, 59, 'Europe/Berlin')->setTimezone('UTC');
    $query->whereBetween('date', [$start, $end]);

    Ich bin mir momentan nur nicht sicher, ob whereBetween inklusive oder exkluse der Start- und Endwerte ist (sprich, ob die erste und letzte Sekunde enthalten ist oder nur die Zeit dazwischen). Das müsstest du einmal prüfen.

    Ich hoffe das hilft dir weiter.