为什么我的 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');
}
我有一个“类型”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');
}