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 = ['post']; /** * 获取评论所属的文章。 */ public function post() { return $this->belongsTo('App\Post'); } }
Beim Vorladen können Sie die angegebenen Spalten aus der Beziehung abrufen.
$users = App\Book::with('author:id,name')->get();
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)) { // }
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]);
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(); }
$loop
-Variablen in blade
s 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
-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; });
dd()
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();
-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']), ]);
Model::all()
mit Eloqument
verwenden, können Sie die zurückzugebenden Spalten angeben. Model::all()
$users = User::all(['id', 'name', 'email']);
Blade
@auth
in -Direktive anstelle der @auth
-Anweisung verwenden, um zu überprüfen, ob der Benutzer authentifiziert ist. if
@if(auth()->user()) // The user is authenticated. @endif
@auth // The user is authenticated. @endauth
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); });
hasMany
-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();
Post::withTrashed()->where('author_id', 1)->restore();
-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(); });
if (view()->exists('custom.page')) { // Load the view }
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'); }); });
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();
Eloquent
orderBy()
in der 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'); }
, 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'); });
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!