- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么 Laravel 的 Eloquent 坚持 hasOne 关系中的外键必须位于引用表中,而不是位于父表中?
我要求获得一般性的理解/丰富。
例如,来自 Laravel 文档:如果 User
有一个 Phone
,则 Phone
模型应该有一个 user_id
外键。
这似乎需要数据库做更多工作:在 Phones
表中查找 user_id
,而不是已经存在的 phone_id
存在于 User
模型中。
我假设以下三个原因都适用 - 还有其他原因以这种方式构建它吗?
Phone
模型实际上也存在。 (否则,User
模型中的 phone_id
可能会指向 Phones
表中不存在的条目。)最佳答案
This seems like more work for the database to do: to go and find the user_id in the Phones table, versus a phone_id already being present on the User model.
您在这里提到的是所谓的 BelongsTo 关系,实际上是 HasOne 或 HasMany 的逆关系。这意味着,如果用户拥有一部或多部电话,则该电话将通过 user_id
外键自动属于用户。这也意味着一部手机将只属于一个用户。
您对 HasOne 和 HasMany 之间的相似性的看法是非常正确的,因为它们以完全相同的方式使用外键。事实上,Eloquent 中唯一真正的区别是,对于 HasOne,它返回引用表中的第一个匹配项,而不是像 HasMany 那样返回所有可用的匹配项。
请注意,您的第三点不太正确,因为 phones
表中的 user_id
很可能不指向 中的现有条目>用户
,除非您的数据库中存在强制外键指向现有条目的约束。
关于sql - 为什么 hasOne 关系中的外键需要位于引用表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58341266/
返回 $this->hasOne('App\Phone', 'foreign_key', 'local_key'); 我需要这两个表中的 hasone 关系。 在这两个表中,关系应该在父表和子表中的用
在登录模型中,我具有与图片表的实现关系 function picture () { return $this->hasOne('App\Picture'); } 现在我想要Picture.pic
这两种 hasOne 语法有什么区别? class Project { ....... ............ static hasOne = Employee // static h
我想对域关联进行反射(reflection),以自动为 RESTful WS(脚手架)生成 JSON/XML 格式的类描述 rune 件。在 HasOne 的情况下(据说是双向的),我试图在 Asso
我正在尝试将 leftJoin 添加到 hasOne 方法中,但它似乎不起作用。来自主表的数据存在,但不来自连接表。代码: public function getUser() {
我有两个模型: a) 食谱b) 用户 每个食谱都有一个用户。当 (REST) 请求食谱时,我还想在我的 JSON 答案中获取相关用户的名称,如下所示: { "id": 1, "user_id"
我是 Grails 的新手。 我可以使用“hasOne”或“hasMany”而不使用“belongsTo”到另一个域类吗? 提前致谢。 最佳答案 是的你可以。请参阅 Grails 文档中的示例:htt
要在 Grails 中创建一对一关系,我可以执行以下操作: class Person { static hasOne = [address: Address] } 在这种情况下,地址表具有其人
我对 NodeJS 和 SequelizeJS 比较陌生,并且我正在构建的查询面临 hasOne 问题,我想知道您对此问题的看法,以找出我出错的地方以及实现此查询的正确方法。 Association
我的表 下面是将 ad_type_id 作为外键并与 ad_type 关联的分类模板模型 'use strict'; module.exports = (sequelize, DataType
假设我有一个 grails 域类,它看起来像 class Person { Address address } 我也可以将其声明为 class Person { static hasOne
我在设置 hasOne 关系时遇到了一些问题,这可能是因为我错误地理解了该关系? 我有 2 个模型,一个用户模型和一个位置模型。我现在要添加的是用户和位置之间的关系,这意味着用户具有当前位置。但是,如
为什么 Laravel 的 Eloquent 坚持 hasOne 关系中的外键必须位于引用表中,而不是位于父表中? 我要求获得一般性的理解/丰富。 例如,来自 Laravel 文档:如果 User 有
在将现有应用程序从 Grails 2.5 迁移到 3.1 时,我遇到了双向一对一关系的奇怪问题。 想象一个带有 User 和 Employee 的简单模型对象。 A User代表通用用户帐户。并非所有
我有一些模型正在尝试关联。 一种模型是 Item,一种是 Slide,另一种是 Asset。 项目下方有多个幻灯片。 Assets 基本上是已上传的文件(图像、mp3 等),幻灯片是显示 Assets
为什么 Laravel 的 Eloquent 坚持 hasOne 关系中的外键必须位于引用表中,而不是位于父表中? 我要求获得一般性的理解/丰富。 例如,来自 Laravel 文档:如果 User 有
对于 belongsTo关系,我可以用dissociate ,但什么是等效于 hasOne ? 前任。 Phone属于User : $phone->user()->dissociate(); // s
所以我有2个模型,User & Profile,关系设置如下: /** * User belongs to many Profile * * @return \I
我有两个表: users 包含(id, name, email) id为主键。 users_details contains (user_id, address, city, postcode) us
我有 2 个表: "article": |id|name|text| "article_permissions" |article_id|val| 所以,我不想将 article_permis
我是一名优秀的程序员,十分优秀!