我在使用多态关系的 laravel 应用程序中有 3 个模型和迁移
楷模
- 属性
- 属性值
- 模型有属性
迁移
属性
Schema::create('attributes', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->timestamps();
});
属性值
Schema::create('attribute_values', function (Blueprint $table) {
$table->id();
$table->string('value');
$table->foreignId('attribute_id')->constrained();
$table->uuidMorphs('model');
$table->timestamps();
});
模型有属性
Schema::create('model_has_attributes', function (Blueprint $table) {
$table->id();
$table->foreignId('attribute_id')->constrained();
$table->foreignId('attribute_value_id')->constrained();
$table->uuidMorphs('model');
$table->timestamps();
});
现在,这里所有的属性都将仅使用属性模型创建,属性的值将使用所有其他模型创建,例如在我的案例中是类别模型。
Category类里面有这样的关系方法:
public function attributeValues()
{
return $this->morphMany(AttributeValue::class, 'model');
}
问题:如何在Category模型中获取所有具有值的属性,您认为我的关系是正确的还是可以更好?