Laravel - Useful Functions that not Everyone Knows

Laravel – Nützliche Funktionen, die nicht jeder kennt

Laravel ist ein sehr umfangreiches Framework, das dem Benutzer viele Werkzeuge und Möglichkeiten bietet, um am Projekt zu arbeiten. Unsere Laravel-Entwickler lernen jeden Tag etwas Neues, wenn sie für unsere Kunden arbeiten. Ich habe mich entschieden, Ihnen heute einige weniger bekannte, aber sehr nützliche Möglichkeiten zu präsentieren, die von den Entwicklern bereitgestellt werden.

Neben diesem Artikel sollten Sie auch die Intuitivität und Schnelligkeit beim Schreiben des Codes in Betracht ziehen.

1. Scheduler-Methoden können mehr verkettet werden

Das Ausführen wiederkehrender Aufgaben ist essenziell für die meisten Webanwendungsprojekte. Laravel erfüllt diese Anforderung mit seiner "Aufgabenplanung". Diese Lösung ist auf eine sehr umfassende und benutzerfreundliche Weise gestaltet.

// Jede Stunde, an Arbeitstagen, zwischen 8:00 und 17:00...
     $schedule->command('foo')
       ->weekdays()
       ->hourly()
       ->between('8:00', '17:00');

Jegliches logisch korrekte Chaining dieser Art wird hier gut funktionieren. Es ist eine sehr elegante und äußerst komfortable Lösung.

Es ist auch möglich, eine komplexere Aufgabe in einer anderen Klasse zu erstellen und sie an unseren Befehl zu delegieren.

    // Jede Stunde, an Geschäftstagen, zwischen 8:00 und 17:00, wenn shouldSkip() wahr zurückgibt...
    $schedule->command('foo')
      ->weekdays()
      ->hourly()
      ->between('8:00', '17:00')
      ->skip(function () {
          return app('SkipValidator')->shouldSkip();
      });

Diese Art von Vereinfachungen ist ein Schlüsselbestandteil der Idee dieses Frameworks. Sie können mehr über seine Einzigartigkeit in unserem Artikel lesen, der die Laravel vs Symfony - Hauptunterschiede vergleicht.

2. Eloquent - Die Methode find() nimmt viele Parameter

Die find()-Methode kann verwendet werden, um mehrere Datensätze abzurufen. Um dies zu erreichen, geben Sie einfach ein Array als Argument an. In diesem Fall gibt die Methode die Sammlung von Eloquent-Modellen mit der angegebenen ID zurück (natürlich, wenn sie existieren). So einfach und offensichtlich es auch erscheinen mag, stoße ich oft auf Code, bei dem jemand es offensichtlich vergessen hat.

// Einen Benutzer mit einer ID von 1 finden.
$data = UserModel::find(1)

// Benutzer mit den ID's 1, 2, 3, 4, 5 finden.
$data = UserModel::find([1,2,3,4,5])

3. Query Builder auf mehreren Spalten auf einfache Weise

Nehmen wir hier ein Beispiel-SQL-Abfrage

SELECT 
  * 
FROM 
  `users` 
WHERE 
  `name` = 'developer' 
  AND `email` = '[email protected]' 
LIMIT 
  1

Mit Eloquent können wir die Abfrage vereinfachen und wie folgt darstellen:

\App\User::whereNameAndEmail('developer','[email protected]')->first();

// Das obige Beispiel ist eine vereinfachte Version der untenstehenden Einträge.
\App\User::where('name', 'developer')->where('email', '[email protected]')->first();
\App\User::where(['name' => 'developer', 'email' => '[email protected]'])->first();

Die Lösung funktioniert mit beiden Operatoren "und" und "oder".

\App\User::whereNameOrEmail('developer','[email protected]')->first();

Ein weiteres Mal wird die Intuition und "Einfachheit" des in Laravel geschriebenen Codes betont.

4. Dateien an E-Mails anhängen

Unabhängig vom verwendeten Tool stellt sich das Versenden von E-Mail-Nachrichten mit Anhängen und Fotos oft als komplizierter und komplexer heraus, als es sein sollte. Laravel hält sich in dieser Hinsicht an die KISS-Regel.

Nehmen wir an, wir möchten die Datei "secret_document_1.pdf", die sich unter dem Pfad "/secrets_documents/secret_document_1.pdf" befindet, unserer Nachricht anhängen.

Mail::send('emails.secret', [], function ($mail) {
    $mail->to('[email protected]');
    $mail->subject('Secret documents you asked for');
    $mail->attach(public_path('secrets_documents/secret_document_1.pdf'));
});

Dasselbe gilt für das Hinzufügen von Fotos im E-Mail-Text.

Das Foto, das Sie angefordert haben:

<img src="{{ $message->embed(public_path('img/photo.jpg')) }}">

Danke!

5. Die Originalwerte des Attributs

Nach Änderungen am Eloquent-Datensatz können wir seinen Originalwert überprüfen.

$user = App\User::first();

// Der Originalwert des Mail-Felds -> [email protected]
$user->mail;

// Wir setzen einen neuen Wert für dieses Feld.
$user->mail = '[email protected]';

// Dieses Feld gibt nun seinen neuen Wert zurück -> [email protected]
$user->mail;

// Mit der getOriginal()-Methode können wir auf den Originalwert zugreifen.
// In diesem Fall wird ein Wert zurückgegeben -> [email protected]
$user->getOriginal('mail');    

// Wir können auch das gesamte Originalelement herunterladen.
$user->getOriginal();

6. Überprüfen, ob das Modell geändert wurde

Wie im Fall des vorherigen Punktes können wir feststellen, ob unsere Einrichtung geändert wurde. Zu diesem Zweck wurde von den Laravel-Entwicklern die spezielle Methode isDirty() vorbereitet. Lassen Sie uns unser vorheriges Beispiel mit seiner Implementierung erweitern.

$user = App\User::first();

// Der Originalwert des Mail-Felds -> [email protected]
$user->mail;

// Die Methode gibt 'false' zurück, da wir an einem frisch aus der Datenbank abgerufenen Objekt arbeiten.
$user->isDirty();  

// Wir setzen einen neuen Wert für dieses Feld.
$user->mail = '[email protected]';

// Die Methode gibt 'true' zurück, da wir gerade den Wert für das Mail-Feld geändert haben
$user->isDirty();  

// Wir können einen Schritt weiter gehen und nach Änderungen für einzelne Felder suchen.

// Es wird 'true' zurückgeben.
$user->isDirty('mail');   
// Es wird 'false' zurückgeben.
$user->isDirty('name');

// Dieses Feld gibt nun seinen neuen Wert zurück -> [email protected]
$user->mail;

// Mit der getOriginal()-Methode können wir auf den Originalwert zugreifen.
// In diesem Fall wird ein Wert zurückgegeben -> [email protected]
$user->getOriginal('mail');    

// Wir können auch das gesamte Originalelement herunterladen.
$user->getOriginal();

Zusammenfassung

Laravel ist ein sehr komplexes Framework, das Entwicklern viel Freiheit und Möglichkeiten bietet. Es stellt auch viele Funktionalitäten bereit, die nicht jeder kennen muss. Die von mir vorgestellten Funktionen sind nur ein Bruchteil aller Möglichkeiten, die uns das System bietet und die wir täglich in unserer PHP-Entwicklungsagentur nutzen.

3. Best practices for software development teams