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.*']);
}