Eloquent belongsToMany基于类型

时间:2018-05-05 12:00:12

标签: php laravel eloquent has-and-belongs-to-many

我遇到了一些使用Laravel's Eloquent无法解决的问题。

我有两个或更多(6个) - 完全对象: - ObjectA - ObjectB - ObjectC 这些对象中的每一个都具有一个自己的Variant,但每个Object的变体结构都是相同的,因此可以是常见的。 Variant有一个字段variant_type,它指示Object所属的类型。如何在这个领域建立关系?

class Variant extends Model
{
    protected $fillable = ['variant_id','name','variant_type','variant_img'];

    public function ObjectsA()
    {
        return $this->belongsToMany(ObjectA::class);
    }
    public function ObjectsB()
    {
        return $this->belongsToMany(ObjectB::class);
    }
    .
    .
    .
}

在Objects模型中,我对Variant :: class有一个关系hasOne。我正在考虑为每个Object示例创建数据透视表:objectA_variant,objectB_variant等......但它不是重点,因为Object有一个变体。 另外,我正在考虑为外键创建可为空的列(6列),但我不确定它是一个好方法吗?

请提前建议和感谢。

1 个答案:

答案 0 :(得分:0)

您应该只有Variant和Object类。然后关系:

对象 - > hasMany Variant

Variant-> hasOne对象

请记住在表中使用正确的列名,例如variant_id而不是variant_type。

否则,您需要手动将引用键添加到关系定义