2016-11-03 13 views
1

예를 들어, Eloquent를 사용하여 데이터베이스에 다중 테이블을 만드는 방법에 대한 간단한 예제가 필요합니다. 모델 "Person"이 있고이 모델에서 확장되는 2 개의 클래스가 있습니다. 학생과 교사 , 그리고 데이터베이스에 하나의 테이블 (인원)을 갖고 싶지 않다면, 나는 2 개의 테이블 (학생과 교사)을 갖고 싶습니다.Laravel의 다중 테이블 상속

Laravel (Eloquent)에서 이것이 가능한 방법은 세 가지 클래스 (Person, Student and 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'); 
    } 
} 

편집

로 마이그레이션하지만 어쩌면 특성은 더 나은 대안이다.

+0

감사합니다. $ table 변수에 대해 알지 못해서 도움이되었습니다. 하지만이 모델의 마이그레이션 파일은 무엇입니까? 왜냐하면 내가 commande php artisan migrate를 실행할 때 테이블 교사와 학생은 어떤 열도 포함하지 않기 때문입니다! –

+0

평소처럼 마이그레이션 파일을 정의해야합니다. * migration * edit –

+0

을 확인하십시오. 마이그레이션 파일의 모든 열을 정의하려면 Person과 Student 간의 상속 목적은 무엇입니까? –