何时使用belongsTo()和laOvel中的hasOne()?

ore*_*iss 10 php laravel

在laravel中定义模型之间的一对一关系时,我们会说:

class Model1 extends Model
{
     public function model2()
     { 
         return $this->hasOne('App\Model2');
     }
}
Run Code Online (Sandbox Code Playgroud)

对于Model2,我们将使用belongsTo('App\Model1').

是否有关于如何决定我们将使用每个函数的结果的逻辑?

Mik*_*son 11

两者之间的区别在于外键将驻留在数据库中.belongsTo函数应属于其表包含外键的模型,而hasOne应属于由另一个表中的外键引用的模型.

两者都可以,但是您应该为将来可能使用您的系统的其他开发人员保持可靠的编码实践.此外,如果您的外键级联删除,这将变得至关重要.如果删除model1,还应该删除belongsTo model1的model2吗?

  • @Moppo实际上并非如此.在文档中,Phone模型具有Mikel提出的`belongsTo()`方法和`user_id`外键. (3认同)