Laravel:关系问题?

问题描述 投票:1回答:2

我开始思考为什么Laravel实现与他们的框架的关系,他们从来没有为我工作过他们在他们休息时需要解决的巨大压力。这是我的关系第五次返回null,即使确保我已正确设置它们?

class UserStats extends Authenticatable
{
    protected $table = 'habbo_user_stats';
    public $timestamps = false;
    protected $guarded = ['id'];

    public function user()
    {
        return $this->belongsTo(User::class, 'id');
    }
}

class User extends Authenticatable
{
    protected $table = 'habbo_users';
    public $timestamps = true;
    protected $guarded = ['id'];

    public function stats() {
        return $this->belongsTo(UserStats::class, 'user_id');
    }
}

虽然,在打电话时

{{ $user->stats->some_column }}

stats返回null ... $user不为空。

php laravel
2个回答
0
投票

我认为你也必须定义关系的所有者。即:

public function stats() {
   // $this->hasMany OR $this->hasOne, depending on your use case.
   return $this->hasMany(UserStats::class, 'user_id');

}

我们需要在这里知道,用户是否有很多用户权限?或者userstats有很多用户记录?你打算在这做什么?


0
投票

以下是我注意到您的代码的事情

  • 您的数据库结构错误。 (需要迁移来验证这一点)
  • 从可验证的扩展UserStatus
  • 你有保护身份证
  • 您的关系定义不正确。

要确认我们需要查看数据库结构和迁移。

如果userstat有很多用户且用户属于1 userstat。

迁移将是

users表将有user_stat_id,userstats表将没有user_id

代码看起来像这样。

UserStatus.php

class UserStats extends Model
{
    protected $table = 'habbo_user_stats';
    public $timestamps = false;
    protected $guarded = ['id'];

    public function users()
    {
        return $this->hasMany(User::class, 'user_stat_id');
    }
}

user.php的

class User extends Authenticatable
{
    protected $table = 'habbo_users';
    public $timestamps = true;
    protected $guarded = ['id'];

    public function stat() {
        return $this->belongsTo(UserStats::class, 'user_stat_id');
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.