J'essaie d'étendre le modèle User avec une autre table (Profil) pour obtenir la photo de profil, l'emplacement, etc.
Puis-je remplacer la fonction index()
du modèle User pour ce faire ?
Code modèle actuel :
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable; protected $fillable = [ 'name', 'email', 'password', 'user_group' ]; protected $hidden = [ 'password', 'remember_token', ]; protected $casts = [ 'email_verified_at' => 'datetime', ]; }
Ce que tu veux faire est dans
User
模型和新的Profile
模型之间建立关系。为此,您首先需要创建一个模型Profile
及其关联的 Tabbleprofiles
php artisan make:model Profile --migration
Fichiers dans
databasemigrations
中应该有一个名为2022_11_28_223831_create_profiles_table.php
Vous devez maintenant ajouter une clé étrangère pour indiquer à quel utilisateur appartient ce profil.
Ajoutez maintenant la fonction suivante dans votre modèle utilisateur
Dans votre modèle de profil
Exécutez
php artisan migrate
et tout devrait fonctionner comme prévuSi vous souhaitez tester si la relation fonctionne comme prévu, créez un nouveau cas de test
php artisan make:test ProfileUserRelationTest
à
testsFeatureProfileUserRelationTest.php
Vous pouvez maintenant courir
php artisan test
pour voir si tout va bien.AttentionCela rafraîchira votre base de données ! Alors ne testez pas en production.
Le résultat devrait ressembler à ceci
En savoir plus sur les relations dans Laravel : https://laravel.com/docs/9.x/eloquent-relationships
En savoir plus sur la migration : https://laravel.com/docs/9.x/migrations
Alternatives