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

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

不言
Libérer: 2019-01-23 10:41:50
avant
2396 Les gens l'ont consulté

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 记录
Copier après la connexion

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
Copier après la connexion

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

$user->isDirty('name');    //true
$user->isDirty('age');     //false
Copier après la connexion

3. Obtenez les attributs modifiés

Utilisez getChanges() pour obtenir les attributs modifiés

$user->getChanges()

//[
     "name" => "Peter",
  ]
Copier après la connexion
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';
}
Copier après la connexion

Ou définir l'accès

class User extends Model
{
    use SoftDeletes;

    public function getDeletedAtColumn()
    {
        return 'is_deleted';
    }
}
Copier après la connexion

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(); // 这将更新数据库中的用户和电话
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion
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
Copier après la connexion

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

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

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:segmentfault.com
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