Laravel中的hasOne()和belongsTo()理解

作者: JONE 分类: PHPer 发布时间: 2019-06-18 15:51

原文链接:https://www.jianshu.com/p/519728494b5d

在某一个class里面,class_name所对应的表为主表(父),
关系函数方法里面的第一个参数所对应的表为从属表(子),
即为与主表相关联的表。
$has~
1、外键保存在关联表中;
2、保存时自动更新关联表的记录;
3、删除主表记录时自动删除关联记录。
$belongsTo
1、外键放置在主表中;
2、保存时不会自动更新关联表的记录;
3、删除时也不会更新关联表的记录。

下面这种说法比较好理解
打个比方,一个人有一部手机,在人也就是用户model 中,你肯定要用hasOne 而不是belongsTo,因为你不能说人是属于手机(虽然也可以这样,但不符合常理,会让人觉得莫名其妙);在手机model中使用belongsTo,意味着手机是物件,人是主体,也就是手机是人类的附属品,且只能有一个。使用的方法名也要[切合实际],这样读代码自己或别人才能看明白。
在使用时,其结果都是返回当前用户的手机或是手机的用户(你可以选择collection类型也可以选择array类型)。注意。在写方法名的时候,最好使用单数(例如phone或者user)而不是复数(因为手机和人相对的都是单个的,应该用单数,这样的命名才更符合逻辑与事实)。