Heim  >  Artikel  >  PHP-Framework  >  Einige Tipps zur Verwendung von Laravel

Einige Tipps zur Verwendung von Laravel

步履不停
步履不停Original
2019-06-28 16:12:483700Durchsuche

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');
    }
}

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();

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)) {
    //
}

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]);

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(); 
}

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
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;
});
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();
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']),
]);
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']);
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
Kurzmethode:
@auth    
 // The user is authenticated. 
@endauth
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);
});
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();
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();
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();
});
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
}
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');     
    });
});
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();
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');
}
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');     
});
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!

Stellungnahme:
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