在laravel中定义模型之间的一对一关系时,我们会说:
class Model1 extends Model
{
public function model2()
{
return $this->hasOne('App\Model2');
}
}
对于Model2,我们将使用belongsTo('App\Model1')
。
是否有关于如何确定我们将使用每个函数的目的的逻辑?
答案 0 :(得分:9)
两者之间的区别在于外键将驻留在数据库中。 belongsTo函数应属于其表包含外键的模型,而hasOne应属于由另一个表中的外键引用的模型。
两者都可以,但是您应该为将来可能使用您的系统的其他开发人员保留可靠的编码实践。此外,如果您的外键级联删除,这将变得至关重要。如果删除model1,还应删除属于model1的model2吗?