我使用工匠命令创建了迁移
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');
}
}
然后我运行了Tinker工匠,当我尝试访问播放器模型时,我的输出是
>>> User::find(1)->player;
=> null
我想念什么?
答案 0 :(得分:3)
您完成了反向连接吗?
这是相关代码
public function player()
{
return $this->hasOne(Player::class);
}
答案 1 :(得分:0)
public function user()
{
return $this->belongsTo('App\User','id' */foreign_key */ ,'user_id'*/owner_key*/);
}
我认为您忘记指定owner_id, 如果您未指定belongsTo的owner_key,则默认的belongsTo是模型ID。
答案 2 :(得分:0)
用户模型
public function player(){
return $this->hasOne('App\Player');
}
玩家模型
public function user(){
return $this->belongsTo('App\User');
}