2016-11-03 12 views
1

Eloquentを使用してデータベースに複数のテーブルを作成する方法の簡単な例が必要です。 モデル「Person」があり、このモデルから2つのクラスが拡張されています:Student and Teacherデータベースには1つのテーブル(人)が必要なわけではなく、2つのテーブル(学生と教師)が必要です。Laravelでの多重テーブル継承

これはLaravel(Eloquent)でどのように可能ですか、3つのクラス(Person、Student、Teacher)のコードを教えてください。

どうもありがとう:)

答えて

2

テストが、動作するはずはない:

Docs

Person.php

<?php 
namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Person extends Model { 
    // ... 
} 

Student.php

<?php 
namespace App; 
class Student extends Person { 
    $table = 'students'; 
    // ... 
} 

Teacher.php

<?php 
namespace App; 
class Teacher extends Person { 
    $table = 'teachers'; 
    // ... 
} 

移行

あなたはphp artisan make:migration create_students_table --create=studentsといつものような所望の移行を作成することができます。その後php artisan migrate

<?php 
use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class CreateStudentsTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('students', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('name'); 
      // ... 
      $table->timestamps(); 
      $table->softDeletes(); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::dropIfExists('students'); 
    } 
} 

EDIT

に移行し、私は背景を知らないが、多分特色は、より良い代替手段です。

+0

私は$ table変数について知らなかったので、参考になりました。しかし、このモデルの移行ファイルはどうでしょうか?コマンドphp artisan migrateを実行すると、テーブルの教師と学生には列が含まれていないためです。 –

+0

いつものようにマイグレーションファイルを定義する必要があります。*マイグレーション*を編集してください。 –

+0

マイグレーションファイル内のすべての列を定義する場合、PersonとStudentの間の継承の目的は何ですか? –