为什么我的 Eloquent 关系没有填满我的所有对象?

Why is my Eloquent Relation not filling all of my objects?

我有一个“类型”table,它只包含 ID 和名称,该关系适用于第一个对象,但 returns null 适用于以下对象。这是我的 JSON 的样子:

{"id":1,"type_id":1,"name":"test1","enabled":1,"measurement_type":{"id":1,"name":"test"}},
{"id":2,"type_id":2,"name":"test2","enabled":0,"measurement_type":null}]},
{"id":3,"type_id":1,"name":"test3","enabled":1,"measurement_type":null}]}

这是我的关系:
MeasurementFields 模型

    public function measurement_type() {
        return $this->belongsTo(MeasurementType::class, 'type_id');
    }

MeasurementTypes 模型

    public function measurement_type() {
        return $this->belongsTo(MeasurementData::class); 
    }

在这个模型中,我已经有一个 measurement_field 函数,它向 MeasurementData(不同的模型)声明了一个 belongsTo 那么,我如何使用 hasMany 为类型命名新函数?

我的控制器:

    public function index()
    {
        return JsonResource::collection(MeasurementField::with('measurement_type')->get());
    }

它们都包含数据,正如您从 JSON 中看到的那样,关系只是不对其执行任何操作。

我的迁移:

        Schema::create('measurement_types', function (Blueprint $table) {
            $table->id()->autoincrement();
            $table->string('name');
        });
        Schema::create('measurement_fields', function (Blueprint $table) {
            $table->id()->autoincrement();
            $table->foreignId('type_id')->constrained('measurement_types');
            $table->string('name')->unique();
            $table->boolean('enabled');
        });

我觉得你的measurement_type有很多measurement_field

我想你必须把它放在你的 MeasurementField 模型中:

public function measurement_type() {
        return $this->belongsTo(MeasurementType::class, 'type_id');
    }