Maison > cadre php > Laravel > Parlons de la relation « un-à-un » la plus simple entre les modèles Laravel !

Parlons de la relation « un-à-un » la plus simple entre les modèles Laravel !

藏色散人
Libérer: 2020-10-12 14:10:34
avant
2537 Les gens l'ont consulté
Vous trouverez ci-dessous

Laravel La colonne du didacticiel présentera la relation « un à un » la plus simple entre l'association de modèles Laravel ! , j'espère que cela sera utile aux amis dans le besoin !

Parlons de la relation « un-à-un » la plus simple entre les modèles Laravel !

Introduction

La base de données relationnelle fournit un mode de liaison d'association de données très simple à utiliser. Les instructions SQL peuvent facilement effectuer des requêtes et des opérations de données associées.

Si toutes les relations sont exploitées au niveau de la base de données, cela sera très gênant.

Ainsi, le modèle laravel fournit des relations d'association. Cet article va trier ces utilisations.

Temps de codage

Nous ne voulons pas lire le manuscrit comme un PPT et lister tous les modèles de relation. Ce n'est pas intuitif et. pas efficace pour l'apprentissage.

Commençons par l’exemple pour voir quel problème la relation d’association résout et comment l’utiliser.

La première étape consiste à préparer la base de données. Supposons qu'il existe une correspondance de champs entre les deux tables suivantes :

Parlons de la relation « un-à-un » la plus simple entre les modèles Laravel !

Utilisez la ligne de commande pour créer un profil. modéliser et créer une migration en même temps. Fichier :

php artisan make:model Profile --migration
Copier après la connexion
Regardons le contenu du fichier

app/Profile.php généré :

namespace App;use Illuminate\Database\Eloquent\Model;class Profile extends Model {}
Copier après la connexion
Parce que –migration

est utilisée, laravel automatiquement. Le fichier database/migrations/2020_10_11_015236_create_profiles_table.php est généré et est utilisé pour générer la base de données correspondante

profils

tableau. Toujours l'ancienne règle, implémentez d'abord la méthode

up

utilisée pour la migration de la base de données :

public function up(){
    Schema::create('profiles', function(Blueprint $table)
    {
        $table->increments('id');
        $table->integer('user_id')->unsigned();
        $table->foreign('user_id')->references('id')->on('users');
        $table->string('url');
        $table->string('telephone');
        $table->timestamps();
    });}
Copier après la connexion
La méthode de rollback n'est pas répertoriée, c'est juste la suppression de la table . Exécutez manuellement la commande de migration ci-dessous :

php artisan migrate
Copier après la connexion

Le contenu de sortie est le suivant :

Migrated: 2020_10_11_015236_create_profiles_table.php
Copier après la connexion

AssociationTout est prêt , commençons Utiliser des associations pour gérer la cohérence des données. Un utilisateur correspond à un profil, il s'agit donc d'une relation un-à-un

Ajoutez l'instruction suivante dans le modèle Utilisateur :

class User extends Model {
    public function profile()
    {
        return $this->hasOne('App\Profile');
    }}
Copier après la connexion

Une fois la méthode ci-dessus définie, elle peut être. appelé dans une chaîne comme celle-ci :

$user = User::find(1)->profile->telephone;
Copier après la connexion

Décomposons-le et expliquons-le. Utilisez d’abord

User::find($id)

pour renvoyer une instance de l’objet modèle User. Cette instance a une méthode

profile

, qui est la déclaration de relation ci-dessus. L'appel de

profile

renvoie une instance de l'objet Profile, vous pouvez donc continuer à appeler les propriétés de Profile, qui est l'origine du téléphone. Il est important de noter que comme pour la méthode d'écriture suivante, les résultats de retour sont différents :

$user = User::find($id);
$user->profile; // 返回 Profile 对象
$user->profile(); // 返回 hasOne 关联关系对象
Copier après la connexion

Lorsque vous l'utilisez, vous ne devez pas être confus et savoir comment l'utiliser.

Avec la requête associée, il y a naturellement la mise à jour associée, et l'utilisation est la suivante :

$profile = new Profile;
$profile->telephone = '12345678';
$user = User::find(1);
$user->profile()->save($profile);
Copier après la connexion

Avec l'opération d'écriture de la mise à jour associée, il y a naturellement la suppression associée, qui n'est qu'un appel à la méthode modèle :

$user = User::find($id);
$user->profile()->delete();
Copier après la connexion

En raison de la relation stricte un-à-un, c'est-à-dire qu'un utilisateur n'a qu'un seul profil si un utilisateur est supprimé,

se retrouvera seul. profil sans attachement.

En plus de la garantie de cohérence dans le contexte du programme, vous pouvez également utiliser la clé étrangère de la base de données pour supprimer l'association de profil lors de la suppression de l'utilisateur. Il suffit ensuite de modifier le fichier de migration,

et d'ajouter le contenu suivant :

$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
Copier après la connexion

Écrire à la fin

Cet article présente le "modèle laravel" le plus simple association" "En tête-à-tête", nous avons expliqué

comment supprimer des ressources de manière cohérente du point de vue du programme et du point de vue de la base de données. Des relations plus complexes sont significatives au niveau de la programmation. Nous présenterons davantage de relations dans le chapitre suivant.

                                                                                     

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:learnku.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