我试图访问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');
}
}
答案 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)之后会有效。
以下是我注意到的有关您的代码的事项
确认我们需要查看数据库结构和迁移。
如果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');
}
}