Laravel如何实现多对多模型关联?(Eloquent教程)

admin 百科 12
Laravel多对多关联需规范命名中间表(如role_user)并定义belongsToMany关系,Eloquent自动处理查询、同步与更新。

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

在 Laravel 中实现多对多模型关联,核心是定义好中间表(pivot table)和模型中的对应关系方法。Eloquent 会自动处理关联查询、数据同步与更新,无需手写复杂 SQL。

创建中间表迁移

多对多关系必须有一个中间表,命名需遵循 Laravel 规范:按字母顺序拼接两个模型的单数形式(如 role_user,而非 user_role)。中间表通常只包含两个外键字段:

  • role_id(关联 roles 表)
  • user_id(关联 users 表)

生成迁移并运行:

php artisan make:migration create_role_user_table

在迁移文件中定义:

Schema::create('role_user', function (Blueprint $table) {
    $table->id();
    $table->foreignId('role_id')->constrained()->onDelete('cascade');
    $table->foreignId('user_id')->constrained()->onDelete('cascade');
    $table->timestamps();

    $table->unique(['role_id', 'user_id']); // 防止重复关联
});

登录后复制

在模型中定义关联方法

两个模型都要声明 belongsToMany 关系,参数顺序和中间表名要一致:

User 模型:

public function roles()
{
    return $this->belongsToMany(Role::class, 'role_user', 'user_id', 'role_id');
}

登录后复制

Role 模型:

标签: php laravel cad ai 表单提交

发布评论 0条评论)

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