Laravel如何实现一对一模型关联?(Eloquent示例)

admin 百科 17
Laravel中一对一关联通过hasOne和belongsTo实现,User模型用hasOne声明拥有Profile,Profile模型用belongsTo声明属于User;需注意外键与主键指定、预加载避免N+1、迁移中添加unique外键约束及级联删除。

Laravel如何实现一对一模型关联?(Eloquent示例)-第1张图片-佛山资讯网

在 Laravel 中,一对一模型关联通过 Eloquent 的 hasOnebelongsTo 方法实现,核心在于明确主从关系和外键位置。

定义一对一双向关联

假设一个用户(User)有且仅有一个个人资料(Profile),且 profiles 表中包含 user_id 外键:

  • User 模型:用 hasOne 声明“我有一个 Profile”
  • Profile 模型:用 belongsTo 声明“我属于某个 User”

代码示例:

// app/Models/User.php
class User extends Model
{
    public function profile()
    {
        return $this->hasOne(Profile::class);
    }
}

登录后复制

// app/Models/Profile.php
class Profile extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

登录后复制

指定外键与本地键(非默认命名时)

如果外键不是 user_id,或主键不是 id,需显式传参:

  • hasOne(模型类, 外键字段, 本地主键)
  • belongsTo(模型类, 外键字段, 关联表主键)

例如:profiles 表用 owner_id 关联 users.id

标签: php laravel cad app 懒加载 ai

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~