首页 > 解决方案 > 如何通过 Laravel 表 Type_Vehicle、Mark、Model 表中的雄辩关系进行连接

问题描述

我需要做3个下拉菜单。选择车辆type时,只有汽车才能得到它。选择 Vehicle_type = Car 时,选择标记,例如 Audi、Bmw、Mercedes。选择Mark的时候,选择的是车型,但是车型必须是,比如我选了奥迪,得到A3,A4,A5。如果用户选择宝马,则将其作为X5、X6等车型。看看我下面的表格。问题 我需要连接模型并获取查询?至少我认为,这些表中还有一个不应该提及的汽车表。

Vehicle_type 或 car_type 表:

    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();
    });

Car_type 型号:

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

标记型号:

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

车型型号:

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

标签: mysqllaraveleloquentrelation

解决方案


您的 car_models 表上可能不需要 car_type_id :

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

应该足够了。

Car_type 型号:

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);
    }
}

车型型号:

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

推荐阅读