Laravel,在数据透视表中有很多很多很多很多很多

时间:2017-01-19 18:49:36

标签: mysql laravel laravel-5 eloquent pivot-table

如何在Eloquent Models中表示这一点的最佳方式:

职位 - ManyToMany - (提供商 - ManyToMany - 服务)

表:

| providers | services  |services_providers | jobs      | jobs_services_providers
--------------------------------------------------------------------------------------
| id        | id        | id                | id        | id                        |
|           |           | providers_id      |           | services_providers_id     |
|           |           | services_id       |           | job_id                    |
|           |           | price             |           | price                     |

谢谢!

1 个答案:

答案 0 :(得分:1)

使用可用的Laravel官方文档here,您的模型应该是

模型职位

class Jobs extends Model {    
    public function providers(){
        return $this->belongsToMany('App\Providers');
    }    
}

模型提供商

class Providers extends Model {
    public function jobs(){
        return $this->belongsToMany('App\Jobs');
    }
    public function services(){
        return $this->belongsToMany('App\Services');
    }
}

模型服务

class Services extends Model {    
    public function providers(){
        return $this->belongsToMany('App\Providers');
    }    
}

如果您使用数据透视表,则可以在模型中定义数据透视表

return $this->belongsToMany('App\Providers', 'services_providers');

如果您想在Eloquent中自定义枢轴关系中的字段,请使用类似

的内容
return $this->belongsToMany('App\Providers', 'services_providers', 'service_id', 'provider_id');

对于所有其他帮助,您应该使用LARAVEL OFFICIAL DOCUMENTATION

希望有所帮助