Laravel / Eloquent - 使用一个参考表的多个多对多关系

时间:2016-10-31 16:37:43

标签: laravel laravel-5 eloquent laravel-5.2

我的桌子看起来很谎言:

enter image description here

该表用作两个表之间的参考表。踢球者是这个参考表所服务的第二个表取决于member_type的值。

使用上表连接了​​三个表:incidentsuser_member_incidentsserver_member_incidents。参考表中的member_id列引用user_member_incidents表或server_member_incidents表。这取决于member_type列的值。

如何在Eloquent中使用belongsToMany方法反映这种关系?

1 个答案:

答案 0 :(得分:4)

假设您拥有IncidentUserMemberServerMember模型,您可以定义以下关系:

class Incident extends Model
{
    public function userMember()
    {
        return $this->belongsToMany(
            UserMember::class, 
            'your_pivot_table_name', 
            'incident_id', 
            'member_id'
        )->wherePivot('member_type', 1);
    }

    public function serverMember()
    {
        return $this->belongsToMany(
            ServerMember::class, 
            'your_pivot_table_name', 
            'incident_id', 
            'member_id'
        )->wherePivot('member_type', 2);
    }
}

希望这能回答你的问题。