0
votes

Comment faire une relation un à un éloquente à Laravel?

J'ai créé ma migration en utilisant la commande artisan

>>> User::find(1)->player;
=> null

Ma migration ressemblait alors à ceci:

class Player extends Model
{
    protected $fillable = ['user_id', 'username'];

    public function user()
    {
        return $this->belongsTo('App\User');
    }
}

Ce qui ne m'a laissé aucune erreur quand j'ai exécuté

php artisan migrate

J'ai ensuite mis à jour mon modèle de lecteur App / Player.php pour inclure les éléments à remplir et une relation un à un

XXX

J'ai ensuite exécuté l'artisan Tinker et ma sortie lorsque j'essaye d'accéder au modèle de joueur est-ce

public function up()
{
    Schema::create('players', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->unsignedBigInteger('user_id')->index();
        $table->foreign('user_id')->references('id')->on('users')->onDelete$
        $table->string('username');
        $table->timestamps();
    });
}

Que me manque-t-il?


0 commentaires

3 Réponses :


3
votes

Avez-vous effectué la connexion inverse?

Voici le code de relation

public function player() 
{
 return $this->hasOne(Player::class);  
}


3 commentaires

Je ne pense pas, ce que j'ai mis dans ma question est tout ce que j'ai fait


public function player () {return $ this-> hasOne ('App \ Player'); }}


Ou quelque chose du genre



0
votes
public function user()
{
    return $this->belongsTo('App\User','id' */foreign_key */ ,'user_id'*/owner_key*/);
}
i think you forgot to specify the owner_id,
if you dont specify the owner_key of belongsTo the default belongsTo getting is the model id.

0 commentaires

0
votes

Modèle utilisateur

public function user(){
    return $this->belongsTo('App\User');
}

Modèle de joueur

public function player(){
    return $this->hasOne('App\Player');
}


0 commentaires