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



我有一个"类型";表,该关系在第一个对象上有效,但在以下对象上返回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 Model

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

测量类型模型

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

相关内容

最新更新