Maison  >  Article  >  cadre php  >  Partage de compétences Laravel Eloquent (exemple d'explication)

Partage de compétences Laravel Eloquent (exemple d'explication)

不言
不言avant
2019-01-23 10:41:502313parcourir

Le contenu de cet article concerne le partage de compétences Laravel Eloquent (exemple d'explication). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Laravel est un framework riche en fonctionnalités. Cependant, vous ne pourrez pas trouver toutes les fonctionnalités disponibles dans la documentation officielle. Voici quelques fonctionnalités que vous ne connaissez peut-être pas.

1. Obtenez les attributs d'origine

Lors de la modification d'un enregistrement de modèle Eloquent, vous pouvez obtenir les attributs d'origine de l'enregistrement en appelant la méthode getOriginal()

$user = App\User::first();
$user->name;                   //John

$user->name = "Peter";         //Peter

$user->getOriginal('name');    //John
$user->getOriginal();          //原始 $user 记录

2. Vérifiez si le modèle a été modifié

Utilisez la méthode isDirty() pour déterminer si le modèle ou un attribut donné a été modifié

$user = App\User::first();
$user->isDirty();          //false

$user->name = "Peter";
$user->isDirty();          //true

Vous pouvez également vérifier si l'attribut spécifié a été modifié.

$user->isDirty('name');    //true
$user->isDirty('age');     //false

3. Obtenez les attributs modifiés

Utilisez getChanges() pour obtenir les attributs modifiés

$user->getChanges()

//[
     "name" => "Peter",
  ]
Remarque : uniquement si vous utilisez syncChanges( ) Cela ne prend effet que lorsque le modèle est enregistré ou mis à jour de manière synchrone

4 Définissez le champ delete_at

Par défaut, Laravel utilise le champ delete_at pour gérer les suppressions logicielles. Vous pouvez le modifier en définissant l'attribut DELETED_AT.

class User extends Model
{
    use SoftDeletes;

     * The name of the "deleted at" column.
     *
     * @var string
     */
    const DELETED_AT = 'is_deleted';
}

Ou définir l'accès

class User extends Model
{
    use SoftDeletes;

    public function getDeletedAtColumn()
    {
        return 'is_deleted';
    }
}

5. Enregistrez le modèle et la relation

Vous pouvez utiliser la méthode push() pour enregistrer le modèle et sa relation d'association.

class User extends Model
{
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

$user = User::first();
$user->name = "Peter";

$user->phone->number = '1234567890';

$user->push(); // 这将更新数据库中的用户和电话

6. Recharger le modèle

Utilisez Fresh() pour recharger un modèle depuis la base de données.

$user = App\User::first();
$user->name;               // John

// user 表被其他进程修改。 例:数据库又插入一条 “name” 为 “Peter” 的数据。

$updatedUser = $user->fresh();
$updatedUser->name;       // Peter

$user->name;              // John

7. Recharger le modèle existant

Vous pouvez utiliser la méthode rafraîchir() pour recharger un modèle existant avec de nouvelles valeurs de la base de données.

$user = App\User::first();
$user->name;               // John

// user 表被其他进程修改。例: “name” 被修改为 “Peter” 。

$user->refresh();
$user->name;              // Peter
Remarque : fresh() mettra également à jour les données de modèle associées au modèle.

8. Vérifiez si les modèles sont identiques

Utilisez la méthode is() pour déterminer si les deux modèles ont la même clé primaire et appartiennent à la même table.

$user = App\User::find(1);
$sameUser = App\User::find(1);
$diffUser = App\User::find(2);

$user->is($sameUser);       // true
$user->is($diffUser);       // false

9. Cloner un modèle

Vous pouvez utiliser la méthode replicate() pour copier un modèle dans un nouvel objet.

$user = App\User::find(1);
$newUser = $user->replicate();

$newUser->save();

10. Spécifiez l'attribut à rechercher dans la méthode find()

Lors de l'utilisation de la méthode find() ou findOrFail(), transmettez-la. le deuxième Paramètres peut spécifier les propriétés à trouver.

$user = App\User::find(1, ['name', 'age']);

$user = App\User::findOrFail(1, ['name', 'age']);

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer