有两个表。 在类别下有一个产品名称。 因此,该产品名称必须唯一。 喜欢 cat1具有pro1,pro2 cat2具有pro1,pro3
表1(迁移):
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateCategoryTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('catefory', function (Blueprint $table) {
$table->increments('id');
$table->string('name')->unique();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('category');
}
}
Tbl2(迁移)
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->foreign('category_id')->references('id')->on('category');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('products');
}
对于每个类别,应该有一个唯一的产品名称。如何在laravel迁移中定义此名称,以便每个类别都应该有一个唯一的产品名称。
答案 0 :(得分:0)
您可以使用表中的键组创建自己的主键,如下所示:-
Tbl2(迁移)
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->primary(['name', 'category_id']);
$table->string('name');
$table->foreign('category_id')->references('id')->on('category');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('products');
}
这将确保每个名称都有唯一的产品/类别。