【发布时间】:2018-08-11 11:48:26
【问题描述】:
我有一个名为user_room_vists 的表,它存储每个用户对房间的访问。这是该表的结构以及我如何在自己的数据库中创建它。
DROP TABLE IF EXISTS `user_room_visits`;
CREATE TABLE `user_room_visits` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(10) unsigned NOT NULL,
`room_id` int(10) unsigned NOT NULL,
`entry_timestamp` double NOT NULL,
`exit_timestamp` double NOT NULL,
`hour` int(11) NOT NULL,
`minute` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `entry_timestamp` (`entry_timestamp`),
KEY `exit_timestamp` (`exit_timestamp`)
) ENGINE=InnoDB AUTO_INCREMENT=73 DEFAULT CHARSET=latin1;
然后我有一个名为users 的表,其中显然包含用户。我正在尝试选择(按最高顺序)用户进行的房间访问次数。
这意味着我必须将user_room_visits 中的user_id 列与users 表中的id 列相匹配,但是因为它位于单独的表中,所以变得复杂。
我没有任何示例可以向您展示我尝试过的事情,因为我被卡住了,每次我在谷歌上搜索它都会提出一些我无法用自己的问题来形容的东西,那个和事实上,我只是不知道我需要做什么才能实现这一目标。我还需要在 Laravel 框架中使用它的 ORM Equolent 来执行此操作,这使得查询变得更加容易,所以我需要的不仅仅是 MySQL。
这里是模型文件
class UserRoomVisit extends Model
{
protected $table = 'user_room_visits';
public $timestamps = true;
protected $guarded = ['id'];
}
class User extends Authenticatable
{
protected $table = 'users';
public $timestamps = true;
protected $guarded = ['id'];
public function userStats() {
return $this->belongsTo(UserStats::class, 'id');
}
}
【问题讨论】:
-
模型文件的内容是什么?你定义了那里的关系吗?
-
@UdayrajDeshmukh 我刚刚用模型文件更新了我的问题。
-
@0b9ff4fb 你能用一些示例数据解释一下你想要什么吗?
-
我无法收集
User模型的集合,按user_room_visits中的房间访问次数降序排列,限制为5。 -
假设
users表有一个名为room_visits的列,我会这样做:User::orderBy('room_visits', 'DESC')->limit(5)->get();,但它没有......所以我需要做一些更复杂的事情。