hasOne 关联:主表 1 对 1 副表。常翻译为 “拥有一个”。
belongsTo 关联:当前表属于另一个表。常翻译为 “属于”。
hasOne:主表每条数据拥有一条副表数据。
belongsTo:当前表这条数据属于另一个表。
hasOne('模型', '副表外键', '主表主键')
belongsTo('模型', '本表外键', '对方主键')
“我有外键,我 belongsTo”
“他有外键指向我,我 hasOne”
主表想查副表,优先 hasOne。
副表查主表,则 belongsTo。
如果你的数据流是从副表出发,记得在模型里定义 belongsTo 兼容。
ThinkPHP/ORM 的 hasOne/belongsTo 不难,只要记住 “外键在哪,谁主动找谁”。
在多表复杂业务场合,始终一条原则: 找谁的就 with 谁的模型,外键在谁就用 belongsTo,主表查副表就用 hasOne。