如何使用Laravel查询生成器按字段值连接不同的表?

时间:2017-08-04 09:50:01

标签: php mysql laravel

我有一个包含以下字段的表格。我只想通过类型字段值连接表,例如,如果类型字段包含经验值,那么连接应该与经验表一起引用association_id字段,并且教育也一样。

 - id
 - title
 - association_id
 - type (experience,education)

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用多态关系

主要型号:

class Association extends Model {
    public function associable()
    {
        return $this->morphTo();
    }
}

Exprience模型:

class Exprience extends Model {
    public function associates()
    {
        return $this->morphMany(Association::class, 'associable');
    }
}

教育模式:

class Education extends Model {
    public function associates()
    {
        return $this->morphMany(Association::class, 'associable');
    }
}

另外,您应该在主模型表中添加两个额外的字段:

associable_id - integer
associable_type - string

额外信息:https://laravel.com/docs/5.4/eloquent-relationships#polymorphic-relations