用“ hasManyThrough”连接3个表

时间:2019-03-01 19:25:15

标签: laravel

我想将3个表加入Laravel。

我的第一个表名为 cars ,第二个 model 和最后的 mark

汽车模型之间的联接是可以的,但是我想在表汽车中获得标记。 / strong>。

here is my tables with my fields

在我的cars.index.blade概述中,我没有得到fk_mark。

enter image description here

在我的创建桌车中,我有这个:

public function up()
    {
        Schema::create('cars', function (Blueprint $table) {
            $table->increments('id');
            $table->string('matriculation', 15);
            $table->string('number_car', 15);
            $table->integer('fk_modele')->unsigned();
            $table->foreign('fk_modele')->references('id_modele')->on('modele');
            $table->timestamps();
        });
    }

创建表模型

public function up()
    {
        Schema::create('modeles', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name_model', 15);
            $table->integer('fk_mark')->unsigned();
            $table->foreign('fk_mark')->references('id_mark')->on('mark');
            $table->timestamps();
        });
    }

创建表格标记

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

我认为可以吗?

然后在模型中

模型车

class Car extends Model
{


    public function modele(){

        return $this->belongsTo('App\Modele', 'fk_modele');
    }

}

模型建模

class Modele extends Model
{
    //

    public function car(){

        return $this->hasMany('App\Car', 'fk_modele', 'id');
    }

    public function mark(){

        return $this->belongsTo('App\Mark', 'fk_mark');
    }

到目前为止没有问题...

但是对于模型Mark ,我有以下提示:

public function mark(){

        return $this->hasMany('App\Mark', 'fk_mark', 'id');
    }

    public function cars()
    {
        return $this->hasManyThrough(
            'App\Car',
            'App\Model',
            'fk_mark', // Foreign key on users table...
            'fk_modele', // Foreign key on posts table...
            'id', // Local key on countries table...
            'id' // Local key on users table...
        );
    }

现在可以吗?

在我的文件cars.index.blade中,我停留在car->mark->name

“试图获取非对象的属性”名称”

@foreach($cars as $car)
                <tr>
                   <td> {{$car->matriculation}}</td>
                   <td> {{$car->number_car}}</td>
                   <td> {{$car->modele->name_model}}</td>
                   <td> {{$car->mark->name}}</td>  

谢谢您的帮助。

0 个答案:

没有答案