首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何利用Laravel迁移创建外键?

如何利用Laravel迁移创建外键?
EN

Stack Overflow用户
提问于 2018-01-10 04:29:26
回答 5查看 23.2K关注 0票数 6

我们如何在referenced keyforeign key中用migrations制作laravel。假设我在laravel中的数据库目录中有两个迁移文件,它们都在我的数据库中创建了一个不同的表。第一次迁移创建了一个表,用于带有Id列的posts。第二个迁移创建了一个名为post_id的列的注释表。现在,the Id column in posts table is referenced keypost_id in comments table is foreign key,我如何将这两列连接在一起?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-01-10 04:43:47

最好将unsignedInteger设置为外键类型

代码语言:javascript
运行
复制
$table->unsignedInteger('category_id')->nullable();

$table->foreign('category_id')
       ->references('id')
       ->on('categories')
       ->onUpdate('cascade')
       ->onDelete('some action');;
票数 10
EN

Stack Overflow用户

发布于 2021-01-07 09:26:55

例如,您有一个users表和一个user_address表。一个用户可以有多个地址,一个地址属于一个用户。

默认用户表

代码语言:javascript
运行
复制
 Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });

以user_addresses表user_id为外键

代码语言:javascript
运行
复制
  Schema::create('user_addresses', function (Blueprint $table) {
            $table->bigIncrements('id'); // by default the primary key is set to unsigned big integer
            $table->unsignedBigInteger('user_id'); //associate the address with a user
            $table->text('address');
            $table->string('city');
            $table->string('country');
            $table->timestamps();

            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        });

定义迁移之后,下一步是在各自的模型类中定义关系。

在用户模型中,添加

代码语言:javascript
运行
复制
public function address(){
        return $this->hasMany(UserAddress::class );
    }

在UserAddress模型中,添加

代码语言:javascript
运行
复制
 public function user(){
        return $this->belongsTo(User::class, 'user_id');
    }
票数 4
EN

Stack Overflow用户

发布于 2018-01-10 07:26:00

你就这样用。

代码语言:javascript
运行
复制
$table->integer('userId')->unsigned();
$table->foreign('userId')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade');
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48180314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档