【发布时间】:2020-04-10 02:47:02
【问题描述】:
我已经在整个网络上苦苦挣扎了大约 2 个小时。
我有一个 USER 模型、一个 RUN 模型和一个 TIME 模型。
在现实世界中,用户正在比赛中,并将他们的时间与 USER_id 和 RUN_id 一起输入数据库。
对于每个 RUN_id,用户应该只能在 TIMES 表中拥有一行 - 如果这有意义的话!
这是我需要在控制器级别管理的事情吗?或者有没有我可以设置的关系来保证这种风格的重复条目不能进入数据库?
目前的数据库结构:
用户:
姓名
运行:
姓名
时间:
时间
user_id
run_id
模型:
用户:
public function times()
{
return $this->hasMany(Time::class);
}
运行:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Run extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
public function times()
{
return $this->hasMany(Time::class);
}
}
时间:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Time extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
public function run()
{
return $this->belongsTo(Run::class);
}
}
【问题讨论】:
-
用户模型上的组关系是什么?
-
USER 表必须有一个作为主键的 id 字段,还有 TIME 表。
-
@L.Fox - 这是一个单独的关系,我将从上面删除
-
USER与RUN有关系吗?
-
您是否为时间表完成了迁移代码?如果是,则在 CreateTimesTable 函数中(在 database\migration\xxxxx_create_times_table.php 中)设置索引;此时可以根据run_id + user_id 设置唯一索引。看这里:stackoverflow.com/questions/20065697/…
标签: laravel eloquent laravel-6.2