私はidとslug(varchar型)列を持つcategoriesテーブルを持っています。categoryテーブルのslugカラムを参照するcategory_slug(varchar型)カラムを持つサブカテゴリテーブルを作成します。LaravelのString/varchar型の列で2つのテーブル間に外部キー関係を作成できますか?
php artisan migrate中にエラーが発生します。
Schema::create('subcategories', function (Blueprint $table) {
$table->increments('id');
$table->string('category_slug')->unique();
$table->integer('product_id');
$table->foreign('category_slug')
->references('slug')->on('categories');
$table->timestamps();
});
端末のエラーです。
[Illuminate\Database\QueryException] SQLSTATE[HY000]: General error: 1005 Can't create table
laravel_eshopper
.#sql-ee8_272
(errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter tabletabpanes
add constrainttabpanes_category_slug_foreign
foreign key (category_slug
) referencescategories
(slug
))[PDOException] SQLSTATE[HY000]: General error: 1005 Can't create table
laravel_eshopper
.#sql-ee8_272
(errno: 150 "Foreign key constraint is incorrectly formed")
このようなタイプのデータベース設計はなぜですか? –
サブカテゴリテーブルには別の列 'product_id'があります。商品テーブルから商品のIDを格納するpost.whichを編集しました。どの商品がどのカテゴリに属するのかを簡単に理解できるようにしたいと思っています。すべてのスラッグがphpmyadminのサブカテゴリテーブルに挿入されるときにドロップダウンとして表示されるので、サブカテゴリテーブルにデータを簡単に挿入するのに役立ちます。 –
なぜ 'subcategories'のために別のテーブルを作成する必要があるのですか?' category'に 'parent_id'を作成することができます。 –