我实际上对使用hasOne()
或belongsTo()
关系感到困惑。假设该关系为1:1
。那是哪一个?
请注意,我已经实现了这两种方法,并且它们都运行良好..但是,标准的是什么?我什么时候应该使用哪个?
答案 0 :(得分:0)
hasOne
可用于强大的模型或实体
belongsTo
可用于弱模型或实体。
我确定您对数据库中的强弱实体有个认识。
答案 1 :(得分:0)
如果您的2个相关表/实体具有一对一关系,则应使用hasOne
进行定义。
如果您的2个相关表/实体之间存在一对多关系(例如A具有许多B),则A应该将B定义为hasMany
,B应该将A定义为belongsTo
,这将是被称为一对多(逆向)
对于您的情况,两个模型都可以将彼此定义为hasOne,并且模型的反面应将拥有模型定义为belongsTo
发票有一个客户,客户属于发票
客户有一张发票,发票属于客户
在一对一关系中,持有相关表/实体的外键的表/实体始终是关系的拥有方,而另一方将是关系的相反方。
答案 2 :(得分:0)
在您不能与客户一起使用hasOne()的情况下,可以使用invice hasOne(customer),因为客户有许多发票,因此面糊将hasOne()与发票一起使用,并将batteryTo()与客户一起使用。 例如发票模型 hasOne(客户)
在客户模型中 EmiratesTo(发票)
答案 3 :(得分:0)
这取决于哪个表具有外键。
想象一下人与汽车之间的关系。
所有者可以拥有一辆汽车。 该汽车可以由一位所有者拥有。
因此,所有者拥有一辆汽车,而该汽车属于Ownwe。因此,外键将放入“汽车”中。汽车需要知道它属于谁。
在您的情况下,发票需要知道它属于谁,因此,如果客户可以有很多发票,则客户hasMany(Invoice::class)
和发票belongsTo(Customer::class)
。