Laravel:加入订单?

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

我有一个名为users的表,然后我有一个名为user_stats的表,stats表保存了该用户在线的时间。我正在尝试通过online_time中的user_stats列排序创建前十大在线用户的集合,但我需要传递users表模型的集合,以便我可以调用usernamemotto等通用列

用户

<?php

namespace App\Database\User;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Database\User\UserStats;
use Auth;

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

        public function getStats() {
            return UserStats::where('id', $this->id)->first();
        }
    }

和统计数据

<?php

namespace App\Database\User;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;

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

如果它只是用户,我会这样做

User::orderBy('online_time', 'DESC')->limit($limit)->get();

但是当online_time属于统计表时,它有点困难。

php laravel
1个回答
0
投票

如果UserUserStat之间的关系是1:1,您可以:

class UserStats
{
    ...

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

得到:

UserStats::with('user')->orderBy('online_time', 'DESC')->limit(10)->get();
© www.soinside.com 2019 - 2024. All rights reserved.