如何在Laravel表Type_Vehicle,Mark,Model表中通过雄辩的关系进行连接

时间:2019-03-14 22:06:18

标签: mysql laravel eloquent relation

我需要创建3个下拉菜单。选择Vehicle_Type时,只有Car会得到它。当选择Vehicle_type = Car时,将选择Mark,例如Audi,Bmw,Mercedes。当选择Mark时,将选择模型,但是例如,如果我选择Audi来获得A3,A4,A5,则模型必须为模型。如果用户选择宝马,则将其作为X5,X6等车型。看看下面的表格。问题我需要连接模型并获取查询吗? 至少我认为,还有一些不应在这些桌子上提及的汽车桌子。

车辆类型或汽车类型表:

    Schema::create('car_types', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->timestamps();
    });

标记表:

    Schema::create('marks', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->integer('car_type_id');
        $table->timestamps();
    });

car_models表:

    Schema::create('car_models', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->integer('car_type_id');
        $table->integer('mark_id');
        $table->timestamps();
    });

汽车类型模型:

class Car_type extends Model
{
   ??????
}

标记模型:

class Mark extends Model
{
  ??????
}

CarModel模型:

class CarModel extends Model
{
    ??????
}

1 个答案:

答案 0 :(得分:0)

您可能不需要在car_models表上使用car_type_id:

Schema::create('car_models', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->integer('mark_id');
    $table->timestamps();
});

应该足够。

汽车类型模型:

class Car_type extends Model
{
    public function marks() {
        return $this->hasMany(Mark::class);
    }
}

标记模型:

class Mark extends Model
{
    public function car_type() {
        return $this->belongsTo(Car_type::class);
    }
    public function models() {
        return $this->hasMany(CarModel::class);
    }
}

CarModel模型:

class CarModel extends Model
{
    public function mark()
    {
        return $this->belongsTo(Mark::class);
    }
}