我们如何在referenced key和foreign key中用migrations制作laravel。假设我在laravel中的数据库目录中有两个迁移文件,它们都在我的数据库中创建了一个不同的表。第一次迁移创建了一个表,用于带有Id列的posts。第二个迁移创建了一个名为post_id的列的注释表。现在,the Id column in posts table is referenced key和post_id in comments table is foreign key,我如何将这两列连接在一起?
发布于 2018-01-10 04:43:47
最好将unsignedInteger设置为外键类型
$table->unsignedInteger('category_id')->nullable();
$table->foreign('category_id')
->references('id')
->on('categories')
->onUpdate('cascade')
->onDelete('some action');;发布于 2021-01-07 09:26:55
例如,您有一个users表和一个user_address表。一个用户可以有多个地址,一个地址属于一个用户。
默认用户表
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为外键
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');
});定义迁移之后,下一步是在各自的模型类中定义关系。
在用户模型中,添加
public function address(){
return $this->hasMany(UserAddress::class );
}在UserAddress模型中,添加
public function user(){
return $this->belongsTo(User::class, 'user_id');
}发布于 2018-01-10 07:26:00
你就这样用。
$table->integer('userId')->unsigned();
$table->foreign('userId')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade');https://stackoverflow.com/questions/48180314
复制相似问题