Laravel中的多表继承

时间:2016-11-03 15:25:53

标签: laravel inheritance eloquent

我想要一个关于如何使用Eloquent在数据库中创建多个表的简单示例,例如: 我有一个模型“人”,从这个模型扩展了2个类:学生和教师,在数据库中我不想有一个表(人),我想有2个表(学生和老师)。

如何在Laravel(Eloquent)中实现这一点,只给我三个类(人,学生和教师)的代码。

非常感谢:)

1 个答案:

答案 0 :(得分: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');
    }
}

修改

我不知道背景,但也许特质是更好的选择。