Php Laravel 5.1属于在多个列上连接的关系

Php Laravel 5.1属于在多个列上连接的关系,php,laravel,eloquent,laravel-5.1,Php,Laravel,Eloquent,Laravel 5.1,我正在连接一个设计糟糕的远程数据库,但我不能以任何方式修改它,我只有读取权限来获取我需要的数据。其结构如下: Products - id - style_id - department_id Brands - id - Name - style_id - department_id 因此,正如您所看到的,它不是一个只有品牌id字段的产品,而是一个样式id和部门id的产品,您必须加入其中才能了解产品的品牌 那么,我该如何在我的产品模型中建

我正在连接一个设计糟糕的远程数据库,但我不能以任何方式修改它,我只有读取权限来获取我需要的数据。其结构如下:

Products
    - id
    - style_id
    - department_id

Brands
    - id
    - Name
    - style_id
    - department_id
因此,正如您所看到的,它不是一个只有
品牌id
字段的产品,而是一个
样式id
部门id
的产品,您必须加入其中才能了解产品的品牌


那么,我该如何在我的产品模型中建立我的belongsTo关系来实现这一点呢?

据我所知,Laravel不支持复合键,但 在laravel回购协议中,开发人员回答说他们没有实施该协议的意图

我认为您只能查询产品品牌查询,例如按品牌组合的产品,如下所示:

Product::where('style_id',$brand->style_id)->where('department_id',$brand->department_id)

最后我做了一个示波器来为我做这件事

public function scopeWithBrand($query)
{
    $query->join('Brands', function($q) {
        $q->on('Products.department_id', '=', 'Brands.department_id')
          ->on('Products.style_id', '=', 'Brand.style_id');
    })->addSelect(['Brands.id AS brand_id', 'Products.*']);
}