理解为什么关系有效

时间:2016-05-19 20:34:58

标签: laravel laravel-5

我试图理解为什么有效。我有一个用户模型,在其中我声明用户可以有一个项目,例如。

# 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创建第二个项目?因此,如果我登录系统,我基本上可以根据自己的名义创建任意数量的项目。这不符合我的相关定义吗?根据这种关系,我只能被允许创建一个项目。

我真的只是在寻找有关为什么允许这样做的信息?

由于

1 个答案:

答案 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