Maison  >  Article  >  cadre php  >  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 !

藏色散人
藏色散人avant
2020-10-12 14:10:342482parcourir
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
Regardons le contenu du fichier

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

namespace App;use Illuminate\Database\Eloquent\Model;class Profile extends Model {}
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();
    });}
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

Le contenu de sortie est le suivant :

Migrated: 2020_10_11_015236_create_profiles_table.php

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');
    }}

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;

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 关联关系对象

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);

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();

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');

É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!

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