【发布时间】:2016-02-11 13:42:55
【问题描述】:
在 laravel 中定义模型之间的一对一关系时,我们会说:
class Model1 extends Model
{
public function model2()
{
return $this->hasOne('App\Model2');
}
}
对于 Model2,我们将使用 belongsTo('App\Model1') 。
是否有关于如何决定我们将使用每个函数的哪一端的逻辑?
【问题讨论】:
-
如果你正在循环
Model1::all()或者如果你正在循环Model2::all()你会分别使用每个方法 -
一个很好的例子是用户>电话。手机是属于用户的,也就是说如果用户不存在,手机本身也不应该存在。相反,用户可以丢失他的手机(手机被删除)但用户仍然存在。
-
另外,一般来说,如果您的数据库架构中存在一对一的关系,则可以改进您的架构。并非总是如此,但往往如此。
-
@STTLCU 你能解释一下吗?
-
当你有一对一的关系时,这意味着实体 A 有一个且唯一的实体 B 与之相关,反之亦然。我从中看到的是,A 和 B 是如此相互关联,以至于它们通常可以在不失一般性的情况下组合在一起(所以你有一个表 C,它由 A 的列加上 B 的列组成)。据我所知,在我的工作经验中,我从未使用过一对一的关系。在大学期间,也许我用过一次,但感觉很奇怪,这是一个糟糕设计的标志。最后,它被删除了。