我试图理解为什么有效。我有一个用户模型,在其中我声明用户可以有一个项目,例如。
# optional
meteor remove standard-minifier-css
meteor add seba:minifiers-autoprefixer
然后在我的Project模型中,我定义了一个属于Project
的用户public function project()
{
return $this->hasOne('App\Project', 'userId');
}
所以我理解这一点,用户应该只允许一个项目?所以在我的Projects控制器中,我有我的商店功能。我不会重复所有这些,但我基本上做了以下
public function user()
{
return $this->belongsTo('App\User', 'userId');
}
现在我获得了输入用户,这始终是登录用户ID。所以说我登录系统然后创建一个新项目。这个项目然后有我的userID。这很好用。
我的问题是为什么它允许我使用相同的ID创建第二个项目?因此,如果我登录系统,我基本上可以根据自己的名义创建任意数量的项目。这不符合我的相关定义吗?根据这种关系,我只能被允许创建一个项目。
我真的只是在寻找有关为什么允许这样做的信息?
由于
答案 0 :(得分:1)
一对一,
您将record
与另一个表格中的另一个record
相关联。
这意味着,您正在检查single record
而不是整个表格。
因此,在您的示例中,正如您所定义的那样,它是一个正确的One - to - One
关系。
为什么要添加新的多个项目?
正如我之前所说,我们正在检查single record
。
我如何限制?
对外键使用UNIQUE
约束
User table
----------
`id` int,
`project_id` UNIQUE,
Project table
----------
`id` int,
`user_id` UNIQUE,
没有唯一约束的示例http://sqlfiddle.com/#!9/f2b07/1/0
(尝试将相同的值放入其中将无法插入)
具有唯一约束的示例http://sqlfiddle.com/#!9/dda24/1