Laravel自定义主键外键场景下一对一关联关系如何定义
一对一关联关系定义解答
你当前编写的关联代码完全正确,完全匹配你的业务规则和表结构设计,无需调整。
正确性说明
Laravel Eloquent关联的参数规则如下:
hasOne(关联模型类, 关联表的外键字段, 当前模型的主键字段):你的Student模型已经将主键设置为nik,关联的Account表用于匹配学生的外键字段也是nik,参数顺序完全符合规则,可以正确查询到学生对应的唯一账号。belongsTo(关联模型类, 当前表的外键字段, 关联模型的主键字段):Account模型中用自身的nik字段关联Student模型的主键nik,参数逻辑完全正确,可以反向查询到账号对应的学生信息。
补充注意事项
为了保证关联查询正常运行,需要确认Student模型的主键配置完整:
class Student extends Model { // 配置主键为nik protected $primaryKey = 'nik'; // 如果nik不是自增整数类型,需关闭自增 public $incrementing = false; // 如果nik是字符串类型,需指定主键类型 protected $keyType = 'string'; }
另外建议给Accounts表的nik字段添加唯一索引,避免出现同一个nik对应多个账号的脏数据,破坏一对一关联的业务规则。
内容的提问来源于stack exchange,提问作者MICHEL SETYAWAN MULYONO
相关产品推荐
相关产品推荐

