Laravel表继承。如何建立关系

Laravel表继承。如何建立关系,laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,我有以下代表购买的表格。一次购买包含许多项目。项目可以是两种可能的类型MaterialItem/ServiceItem。 材质项具有关联的材质,而ServiceItem仅包含几个文本字段 表“purchases\u item\u base”包含两种可能的项目类型的公共列 如何在采购模型中定义两个关系,一个用于检索关联的物料项,另一个用于服务项 // TABLE 1 purchases Schema::create('purchases', function(Blueprint $

我有以下代表购买的表格。一次购买包含许多项目。项目可以是两种可能的类型MaterialItem/ServiceItem。 材质项具有关联的材质,而ServiceItem仅包含几个文本字段

表“purchases\u item\u base”包含两种可能的项目类型的公共列

如何在采购模型中定义两个关系,一个用于检索关联的物料项,另一个用于服务项

    // TABLE 1 purchases
    Schema::create('purchases', function(Blueprint $table) {
        $table->bigIncrements("id")->unsigned();            
        $table->text("details");            
        $table->timestamps();
        $table->softDeletes();
    });



    // TABLE 2 purchases_item_base
    Schema::create('purchases_item_base', function(Blueprint $table) {
        $table->bigIncrements("id")->unsigned();
        $table->unsignedBigInteger("purchase_id")->unsigned();          
        $table->decimal("price", 15 , 2);            
        $table->unsignedTinyInteger("priority");
        $table->text("obs");
        $table->timestamps();
    });

    Schema::table('purchases_item_base', function(Blueprint $table) {
        $table->foreign('purchase_id')->references('id')->on('purchases');            
    });



   // TABLE 3 materials
    Schema::create('materials', function(Blueprint $table) {
        $table->bigIncrements("id")->unsigned();
        $table->string('color');
        $table->string('weight');
        $table->string('brand');
        $table->string('model');
    });



    // TABLE 4 purchase_item_material
    Schema::create('purchase_item_material', function(Blueprint $table) {
        $table->unsignedBigInteger("base_item_id")->unsigned();
        $table->unsignedBigInteger("material_id")->unsigned();
        $table->unsignedInteger("quantity")->default(1);
    });

    Schema::table('purchase_item_material', function(Blueprint $table) {
        $table->foreign('base_item_id')->references('id')->on('purchases_item_base');
        $table->foreign('material_id')->references('id')->on('materials');
    });




    // TABLE 5 purchase_item_service
    Schema::create('purchase_item_service', function(Blueprint $table) {
        $table->unsignedBigInteger("base_item_id")->unsigned();
        $table->string("pn_number");
        $table->text("description");
    });

    Schema::table('purchase_item_service', function(Blueprint $table) {
        $table->foreign('base_item_id')->references('id')->on('purchases_item_base');            
    })

尝试使用一对多多态关系


请参阅文档,以便更好地理解这种情况,您需要使用
hasManyThrough
关系。我不知道如何使用?我认为这需要多态关系。正如你所看到的,我在两个项目类型表中有一个FK(PuraSeaItImithObjor,PuffaseItIsService)。