理解为什么关系有效



我正在努力理解为什么某些东西会起作用。我有一个用户模型,在其中我声明用户可以有一个项目,例如

public function project()
{
return $this->hasOne('AppProject', 'userId');
}

然后在我的项目模型中,我定义一个用户属于项目

public function user()
{
return $this->belongsTo('AppUser', 'userId');
}

所以按照我的理解,一个用户应该只允许一个项目?因此,在我的Projects控制器中,我有我的存储功能。我不会去看所有的,但我基本上做了以下

$newProject = new Project();
$newProject->projectName = Input::get('projectName');
$newProject->projectValue = Input::get('projectValue');
$newProject->userId = Input::get('user');
$newProject->save();

现在,在我获得输入用户的地方,这总是已登录用户的id。所以说,我登录到系统并创建一个新项目。然后这个项目就有了我的userID。这很好用。

我的问题是,为什么它允许我用相同的ID创建第二个项目?因此,如果我登录到系统,我基本上可以用我的名字创建尽可能多的项目。这难道不违背我的亲属关系的定义吗?根据关系,我应该只被允许创建一个项目。

我真的只是想了解为什么允许这样做?

感谢

一对一中,

您正在将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

最新更新