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 : 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
app/Profile.php généré :
namespace App;use Illuminate\Database\Eloquent\Model;class Profile extends Model {}
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
profilstableau. 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();
});}
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
profilerenvoie 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');
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!