Heim > PHP-Framework > Laravel > Hauptteil

Einige Tipps zur Verwendung von Laravel

步履不停
Freigeben: 2019-06-28 16:12:48
Original
3694 Leute haben es durchsucht

Einige Tipps zur Verwendung von Laravel

01: Zeitstempel des übergeordneten Modells auslösen

Wie der Titel zeigt, kann bei der Aktualisierung des untergeordneten Modells der Zeitstempel des übergeordneten Modells ausgelöst werden. Beispielsweise gehört Comment zu Post, was manchmal nützlich ist, wenn die Aktualisierung eines untergeordneten Modells zur Aktualisierung des Zeitstempels des übergeordneten Modells führt. Wenn beispielsweise ein Comment-Modell aktualisiert wird, möchten Sie automatisch eine Aktualisierung des Post-Zeitstempels des übergeordneten updated_at-Modells auslösen. Eloquent Machen Sie es sich einfach, fügen Sie einfach ein touch-Attribut hinzu, das den Namen der untergeordneten Modellbeziehung enthält.

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Comment extends Model
{
    /**
     * 涉及到的所有关联关系。
     *
     * @var array
     */
    protected $touches = [&#39;post&#39;];
    /**
     * 获取评论所属的文章。
     */
    public function post()
    {
        return $this->belongsTo('App\Post');
    }
}
Nach dem Login kopieren

02: Exakte Spalten vorab laden

Beim Vorladen können Sie die angegebenen Spalten aus der Beziehung abrufen.

$users = App\Book::with('author:id,name')->get();
Nach dem Login kopieren

03: Authentifizierung eines Benutzers für eine einzelne Anfrage

Sie können Auth::once() verwenden, um einen Benutzer für eine einzelne Anfrage zu authentifizieren. Diese Methode verwendet nicht die Cookie-Sitzung. Dies bedeutet, dass diese Methode zum Erstellen einer zustandslosen API nützlich sein kann.

if (Auth::once($credentials)) {
    //
}
Nach dem Login kopieren

04: Weiterleitung zu einer Controller-Methode mit Parametern

Sie können die redirect()-Methode nicht nur in benutzerspezifischen URLs oder Routen verwenden, sondern auch in Controllern in einer Methode mit Parametern.

return redirect()->action('SomeController@method', ['param' => $value]);
Nach dem Login kopieren

05: So verwenden Sie withDefault(), um Fehler in Beziehungen zu vermeiden

Wenn eine Beziehung aufgerufen wird und sie nicht existiert, tritt ein schwerwiegender Fehler auf, z. B. $post->user->name , kann mit withDefault() vermieden werden.

/** 获取文章作者 */ 
public function user() 
{     
    return $this->belongsTo('App\User')->withDefault(); 
}
Nach dem Login kopieren

06: In der Vorlage können zwei horizontale $loop-Variablen

in blades foreach weiterhin verwendet werden, indem die abgerufen wird die übergeordnete Variable. $loop

@foreach ($users as $user)     
    @foreach ($user->posts as $post)         
        @if ($loop->parent->first)             
            This is first iteration of the parent loop.         
        @endif     
    @endforeach 
@endforeach
Nach dem Login kopieren
07: Abfrageergebnisse ändern

Nachdem Sie die

-Abfrage ausgeführt haben, können Sie Eloqument verwenden, um Zeilen zu ändern. map()

$users = User::where('role_id', 1)->get()->map(function (User $user) {
    $user->some_column = some_function($user);
    return $user;
});
Nach dem Login kopieren
08: Verwenden Sie ganz einfach

dd()

, indem Sie

am Ende von Eloqument anstelle von $test->dd() hinzufügen. dd($result)

// 优化前
$users = User::where('name', 'Taylor')->get();
dd($users);
// 优化后
$users = User::where('name', 'Taylor')->get()->dd();
Nach dem Login kopieren
09: Verwenden Sie hasMany, umMany zu speichern.

Wenn eine

-Beziehung besteht und Sie viele Unterklassenobjekte vom übergeordneten Klassenobjekt speichern möchten, können Sie dies mit hasMany() erreichen Ihr Ziel gewünschte Wirkung. saveMany()

$post = Post::find(1);
$post->comments()->saveMany([
    new Comment(['message' => 'First comment']),
    new Comment(['message' => 'Second comment']),
]);
Nach dem Login kopieren
10: Angeben von Spalten in

Model::all()

Wenn Sie

mit Eloqument verwenden, können Sie die zurückzugebenden Spalten angeben. Model::all()

$users = User::all(['id', 'name', 'email']);
Nach dem Login kopieren
11:

Blade@auth in

Sie können die

-Direktive anstelle der @auth-Anweisung verwenden, um zu überprüfen, ob der Benutzer authentifiziert ist. if

Typische Methode:
@if(auth()->user())     // The user is authenticated. @endif
Nach dem Login kopieren
Kurzmethode:
@auth    
 // The user is authenticated. 
@endauth
Nach dem Login kopieren
12: Vorschau der E-Mail ohne Senden

Wenn Sie

Mailables zum Senden verwenden Ihre E-Mails können Sie in der Vorschau anzeigen, ohne sie zu senden.

Route::get('/mailable', function () {
    $invoice = App\Invoice::find(1);
    return new App\Mail\InvoicePaid($invoice);
});
Nach dem Login kopieren
13: Spezifische Prüfung für

hasMany

In der

-Beziehung von Eloquent können Sie Datensätze mit n untergeordneten Datensätzen herausfiltern. hasMany()

// Author -> hasMany(Book::class) 
$authors = Author::has('books', '>', 5)->get();
Nach dem Login kopieren
14: Mehrere vorläufig gelöschte Datensätze wiederherstellen

Wenn die Datensätze vorläufig gelöscht werden, können Sie mehrere vorläufig gelöschte Datensätze gleichzeitig wiederherstellen.

Post::withTrashed()->where('author_id', 1)->restore();
Nach dem Login kopieren
15: Migrationsspalte mit Zeitzone

Die Migrationsdatei hat nicht nur einen

-Zeitstempel, sondern auch einen timestamps()-Zeitstempel mit Zeitzone. timestampsTz()

Schema::create('employees', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->string('email');
    $table->timestampsTz();
});
Nach dem Login kopieren
16: Existiert die Ansichtsdatei?

Wussten Sie, dass Sie auch prüfen können, ob eine Ansichtsdatei vorhanden ist?

if (view()->exists('custom.page')) {
    // Load the view
}
Nach dem Login kopieren
17: Routing-Gruppen innerhalb von Gruppen

In Routing-Dateien können Sie eine Gruppe für eine Routing-Gruppe erstellen und spezifische Middleware dafür angeben.

Route::group(['prefix' => 'account', 'as' => 'account.'], function() {
    Route::get('login', 'AccountController@login');     
    Route::get('register', 'AccountController@register');
    Route::group(['middleware' => 'auth'], function() {         
        Route::get('edit', 'AccountController@edit');     
    });
});
Nach dem Login kopieren
18: Datums- und Uhrzeitmethoden in

Eloquent

, whereDay() , whereMonth() , whereYear() , whereDate() Diese Methoden sind alle in whereTime() Möglichkeiten, Daten zu überprüfen. Eloquent

$products = Product::whereDate('created_at', '2018-01-31')->get(); 
$products = Product::whereMonth('created_at', '12')->get(); 
$products = Product::whereDay('created_at', '31')->get(); 
$products = Product::whereYear('created_at', date('Y'))->get(); 
$products = Product::whereTime('created_at', '=', '14:13:58')->get();
Nach dem Login kopieren
19: Verwendung von

EloquentorderBy() in der

-Relation Sie können

direkt in der Eloquent-Relation angeben. orderBy()

public function products()
{
    return $this->hasMany(Product::class);
}
public function productsByName()
{
    return $this->hasMany(Product::class)->orderBy('name');
}
Nach dem Login kopieren
20: Ganzzahl ohne Vorzeichen

Verwenden Sie für migrierte Fremdschlüssel nicht

, sondern integer() oder unsignedInteger(), da sonst eine Reihe von Problemen auftreten. integer()->unsigned()

Schema::create('employees', function (Blueprint $table) {     
    $table->unsignedInteger('company_id');     
    $table->foreign('company_id')->references('id')->on('companies');     
});
Nach dem Login kopieren
Weitere technische Artikel zu Laravel finden Sie in der Spalte

Laravel-Tutorial, um mehr darüber zu erfahren!

Das obige ist der detaillierte Inhalt vonEinige Tipps zur Verwendung von Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!