Laravel:无法访问?

时间:2018-03-03 07:53:46

标签: php laravel

我试图访问User模型,但它返回空?

$topOnlineTime = UserStats::with('user')->orderBy('OnlineTime', 'DESC')->limit(10)->get();

在视图中:

@foreach ($topOnlineTime as $user)
{{ number_format($user->username) }}
@endforeach

username属于用户模型

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

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

以下是用户模型

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

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

2 个答案:

答案 0 :(得分:2)

由于UserStats包含许多User条记录,因此您还需要迭代用户:

@foreach ($topOnlineTime as $userStats)
    @foreach ($userStats->user as $user)
        {{ $user->username }}
    @endforeach
@endforeach

答案 1 :(得分:1)

Laravel: Issue with relationship?上查看我的答案 因为我认为你的循环的结果是返回null,因为你的迁移和关系没有正确设置。

以下是我对这个问题的回答。我认为在确定@Alexy Mezenin上面的回答(https://stackoverflow.com/a/49082019/1409707)之后会有效。

以下是我注意到的有关您的代码的事项

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

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

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

迁移将是

用户表将拥有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');
    }
}