同桌的雄辩外键

时间:2013-08-17 05:28:42

标签: schema laravel laravel-4 eloquent

在Laravel 4的Eloquent中,

我有一个表user和一个字段user.friend_id,它也是用户的ID ..

但是当我尝试使用friend_id = 0创建新用户时,外键失败..

当friend_id = 1时,它会成功。

我在用户的架构构建器中有这个

$table->unsignedInteger('friend_id')->default(0)->nullable(); 

我应该在这做什么?

我应该刚创建一个数据透视表吗?

谢谢!

2 个答案:

答案 0 :(得分:5)

您不应为null able外键设置默认值0。

正确的方式:

$table->unsignedInteger('friend_id')->nullable(); 

<强>解释

$table->unsignedInteger('friend_id')->default(0)->nullable(); 

当您尝试插入新记录时,将friend_id留空。

  • 数据库采用字段的默认值,即:0
  • 因为它是外键,为了维护关系完整性,它会查找主键为0的记录(当然不存在)

答案 1 :(得分:2)

假设您可以拥有多个朋友,那么是的,您应该有一个数据透视表

用户表

id | name
1  |  Laurence
2  |  Ben
3  |  Jane

Users_Friend table

   user_id | friend_id
    1      |  2
    1      |  3

这意味着劳伦斯是Ben和Jane的朋友