Maison > cadre php > Laravel > Quelques conseils lors de l'utilisation de Laravel

Quelques conseils lors de l'utilisation de Laravel

步履不停
Libérer: 2019-06-28 16:12:48
original
3746 Les gens l'ont consulté

Quelques conseils lors de l'utilisation de Laravel

01 : Déclencher l'horodatage du modèle parent

Comme le titre l'indique, lorsque le modèle enfant est mis à jour, l'horodatage du modèle parent peut être déclenché. Par exemple, Comment appartient à Post, ce qui est parfois utile lorsque la mise à jour d'un modèle enfant entraîne la mise à jour de l'horodatage du modèle parent. Par exemple, lorsqu'un modèle Comment est mis à jour, vous souhaitez déclencher automatiquement une mise à jour de l'horodatage Post du modèle updated_at parent. Eloquent Facilitez-vous la tâche, ajoutez simplement un attribut touch contenant le nom de la relation modèle enfant.

<?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');
    }
}
Copier après la connexion

02 : Précharger les colonnes exactes

Lorsque vous utilisez le préchargement, vous pouvez obtenir les colonnes spécifiées à partir de la relation.

$users = App\Book::with('author:id,name')->get();
Copier après la connexion

03 : Authentifier un utilisateur pour une seule requête

Vous pouvez utiliser Auth::once() pour authentifier un utilisateur pour une seule requête. Cette méthode n'utilise pas la session Cookie. Cela signifie que cette méthode peut être utile pour créer une API sans état.

if (Auth::once($credentials)) {
    //
}
Copier après la connexion

04 : Redirection vers une méthode de contrôleur avec des paramètres

Vous pouvez utiliser la méthode redirect() non seulement dans des URL ou des routes spécifiques à l'utilisateur, mais également dans des contrôleurs dans une méthode avec des paramètres.

return redirect()->action('SomeController@method', ['param' => $value]);
Copier après la connexion

05 : Comment utiliser withDefault() pour éviter les erreurs dans les relations

Lorsqu'une relation est appelée, si elle n'existe pas, une erreur fatale se produira, comme $post->user->name , peut être évité en utilisant withDefault().

/** 获取文章作者 */ 
public function user() 
{     
    return $this->belongsTo('App\User')->withDefault(); 
}
Copier après la connexion

06 : Dans le modèle, deux variables $loop horizontales

dans blade et foreach peuvent toujours être utilisées en utilisant variable pour obtenir le variable mère. $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
Copier après la connexion
07 : Modifier les résultats de la requête

Après avoir exécuté la requête

, vous pouvez utiliser Eloqument pour modifier les lignes. map()

$users = User::where('role_id', 1)->get()->map(function (User $user) {
    $user->some_column = some_function($user);
    return $user;
});
Copier après la connexion
08 : Utilisez facilement

dd()

en ajoutant

à la fin de Eloqument au lieu de $test->dd(). dd($result)

// 优化前
$users = User::where('name', 'Taylor')->get();
dd($users);
// 优化后
$users = User::where('name', 'Taylor')->get()->dd();
Copier après la connexion
09 : utilisez hasMany pour saveMany.

S'il existe une relation

et que vous souhaitez enregistrer de nombreux objets de sous-classe de l'objet de classe parent, vous pouvez utiliser hasMany() pour obtenir votre objectif, l'effet souhaité. saveMany()

$post = Post::find(1);
$post->comments()->saveMany([
    new Comment(['message' => 'First comment']),
    new Comment(['message' => 'Second comment']),
]);
Copier après la connexion
10 : Spécifier les colonnes dans

Model::all()

Lorsque vous utilisez

avec Eloqument, vous pouvez spécifier les colonnes à renvoyer. Model::all()

$users = User::all(['id', 'name', 'email']);
Copier après la connexion
11 :

Blade@auth dans

Vous pouvez utiliser la directive

au lieu de l'instruction @auth pour vérifier si l'utilisateur est authentifié. if

Méthode typique :
@if(auth()->user())     // The user is authenticated. @endif
Copier après la connexion
Méthode courte :
@auth    
 // The user is authenticated. 
@endauth
Copier après la connexion
12 : Aperçu de l'e-mail sans envoi

Si vous utilisez

Mailables pour envoyer vos emails, vous pouvez les prévisualiser sans les envoyer.

Route::get('/mailable', function () {
    $invoice = App\Invoice::find(1);
    return new App\Mail\InvoicePaid($invoice);
});
Copier après la connexion
13 : Vérification spécifique pour

hasMany

Dans la relation

de Eloquent vous pouvez filtrer les enregistrements avec n nombre d'enregistrements enfants. hasMany()

// Author -> hasMany(Book::class) 
$authors = Author::has('books', '>', 5)->get();
Copier après la connexion
14 : Récupérer plusieurs suppressions logicielles

Si les enregistrements utilisent la suppression logicielle, vous pouvez récupérer plusieurs enregistrements supprimés de manière logicielle en même temps.

Post::withTrashed()->where('author_id', 1)->restore();
Copier après la connexion
15 : Colonne Migration avec fuseau horaire

Le fichier de migration a non seulement un horodatage

, mais également un horodatage timestamps() avec fuseau horaire. timestampsTz()

Schema::create('employees', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->string('email');
    $table->timestampsTz();
});
Copier après la connexion
16 : Le fichier de vue existe-t-il ?

Saviez-vous que vous pouvez également vérifier si un fichier de vue existe ?

if (view()->exists('custom.page')) {
    // Load the view
}
Copier après la connexion
17 : Groupes de routage au sein des groupes

Dans les fichiers de routage, vous pouvez créer un groupe pour un groupe de routage et spécifier un middleware spécifique pour celui-ci.

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');     
    });
});
Copier après la connexion
18 : Méthodes de date et d'heure dans

Eloquent

, whereDay() , whereMonth() , whereYear() , whereDate() Ces méthodes sont toutes dans whereTime() Façons de vérifier les dates. 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();
Copier après la connexion
19 : Utiliser

EloquentorderBy() dans la relation

Vous pouvez spécifier

directement dans la relation Eloquent. orderBy()

public function products()
{
    return $this->hasMany(Product::class);
}
public function productsByName()
{
    return $this->hasMany(Product::class)->orderBy('name');
}
Copier après la connexion
20 : Entier non signé

Pour les clés étrangères migrées, n'utilisez pas

, mais utilisez integer() ou unsignedInteger(), sinon une série de problèmes apparaîtra comme une erreur. integer()->unsigned()

Schema::create('employees', function (Blueprint $table) {     
    $table->unsignedInteger('company_id');     
    $table->foreign('company_id')->references('id')->on('companies');     
});
Copier après la connexion
Pour plus d'articles techniques liés à Laravel, veuillez visiter la colonne

Tutoriel Laravel pour apprendre !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal