首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在laravel 5.2迁移时需要定义外键吗?

在laravel 5.2迁移时需要定义外键吗?
EN

Stack Overflow用户
提问于 2016-07-06 18:05:02
回答 2查看 294关注 0票数 1

我想创建两个表:支持者和数据库中的票。在“票证表”中,我希望将“支持者”表的id添加为“外键”(票证表中的supports_id )。但我不会把它定义为迁移的外键。我在拉拉维尔官方网站上读到了雄辩的关系,它说:“雄辩将自动确定正确的外键列,并以_id作为后缀。”所以,我是对还是错?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-07 06:20:51

如果在迁移中没有定义外键,那么数据库在数据库级别上就没有任何外键关系。(没有提及的完整性等等.)。

如果您使用雄辩功能查询您的数据库,您可以拥有这样的用户模型:

名称空间应用;

使用照明\数据库\雄辩\模型;

代码语言:javascript
复制
class User extends Model
{
    /**
     * Get the phone record associated with the user.
     */
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

在这种情况下,有一对一的关系用户<->电话。

这里假定,phones表有一个名为user_id (modelname + "_“+ "id") 的列,用于创建Joins.

您完全可以自由地使用您自己命名键的约定,并按以下方式使用该函数:

代码语言:javascript
复制
 public function phone()
 {
    return $this->hasOne('App\Phone','own_key_name');
 }

但是,再说一遍:仅仅使用雄辩并不意味着数据库表有任何外键约束。它们必须添加到数据库迁移中。

票数 0
EN

Stack Overflow用户

发布于 2016-07-06 20:25:58

我总是这样做

代码语言:javascript
复制
 Schema::create('tickets', function (Blueprint $table) {
            $table->increments('id')->unsigned();
            $table->integer('supporters_id')->unsigned()->index();
            $table->foreign('supporters_id')->references('id')->on('supporters')->onDelete('cascade');
            $table->string('ticket_owner');
            ...
            $table->timestamps();
        });

因此,我明确地定义了$table->foreign这一事实使我认为它是必要的。如果你发现其他证据不需要,请告诉我:-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38230814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档