首页 > 解决方案 > 没有定义外键约束的雄辩关系

问题描述

我有一些与 Laravel 中雄辩的关系相关的查询。

如果我在使用 laravel 定义的任何关系时没有指定外键,那么 laravel 会根据 laravel 8 文档中所写的父模型名称假设外键来使其工作。

所以我想问的是,如果 laravel 只是假设意味着 laravel 将使关系正常工作,但 laravel 不会像外键那样维护数据一致性?我对吗?

如果我是对的,那么解决方案将是在使用关系时在迁移文件中明确定义外键?

标签: phplaravel

解决方案


我想,你混合了两件事,数据库的 DDL/模式和 ORM/数据库抽象层:

  • 数据库的 DDL/模式定义了数据库本身的结构和工作方式。在 Laravel 中,这可以通过迁移来控制。
  • ORM/数据库抽象层通常不会改变模式,它只是做CRUD(这是DML而不是DDL)。在 Laravel 中,这可以通过查询构建器Eloquent来完成,后者是一个ORM

这意味着,前者创建外键约束,后者只假设一个列名放入它创建的 SQL 查询中


推荐阅读