Как сделать однозначное красноречивое отношение в Laravel? - PullRequest
0 голосов
/ 27 июня 2019

Я создал свою миграцию, используя команду ремесленника

php artisan make:model Player -m

Тогда моя миграция выглядела так:

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

Что не оставило мне ошибок при запуске

php artisan migrate

Затем я обновил модель своего игрока App/Player.php, включив в него заполнители и отношение один к одному

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

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

Затем я запустил ремесленника Тинкера, и мой вывод при попытке получить доступ к модели плеера это

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

Чего мне не хватает?

Ответы [ 3 ]

3 голосов
/ 27 июня 2019

Вы сделали обратное соединение?

Вот код связи

public function player() 
{
 return $this->hasOne(Player::class);  
}
0 голосов
/ 27 июня 2019

Модель пользователя

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

Модель игрока

public function user(){
    return $this->belongsTo('App\User');
}
0 голосов
/ 27 июня 2019
public function user()
{
    return $this->belongsTo('App\User','id' */foreign_key */ ,'user_id'*/owner_key*/);
}

я думаю, что вы забыли указать owner_id, если вы не укажете ключ владельца для принадлежащего, то для получения значения по умолчанию используется идентификатор модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...