房间和用户之间的关系是反向的。
将用户模型更改为:
public function room(){
return $this->hasOne(App\Room::class, 'user1_id');
}
和房间模型:
public function user1 (){
return $this->belongsTo(App\User::class, 'user1_id');
}
public function user2 (){
return $this->belongsTo(App\User::class, 'user2_id');
}
但是,如果将来可以为用户分配不同的活动、预订等房间,那么最好创建一个透视表并使用多对多关系。公约会给它命名
room_user
并在迁移中定义为:
$table->unsignedInteger('room_id');
$table->unsignedInteger('user_id');
$table->foreign('room_id')->references('id')->on('rooms');
$table->foreign('user_id')->references('id')->on('users');
然后,模型关系将更改为:
// User.php
public function rooms (){
return $this->belongsToMany(App\Room::class);
}
// Room.php
public function users (){
return $this->belongsToMany(App\User::class);
}
以后可以通过查询范围或结果集合的筛选应用任何其他约束。