我正在连接到一个设计不佳的远程数据库但是我无法以任何方式修改它我只能读取获取所需数据的权限。它具有以下结构:
Products
- id
- style_id
- department_id
Brands
- id
- Name
- style_id
- department_id
因为您可以看到而不是只有brand_id
字段的产品,您必须加入style_id
和department_id
才能找到产品的品牌是
那么我如何在我的产品模型中设置我的belongsTo关系才能实现这一目标呢?
答案 0 :(得分:2)
我最终为我做了一个范围。
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.*']);
}
答案 1 :(得分:1)
据我所知,Laravel不支持复合键,有 an issue opened在laravel回购中,开发人员回答说他们没有意图实施它。
我认为您只能查询产品品牌查询,例如品牌产品组合,如下所示:
Product::where('style_id',$brand->style_id)->where('department_id',$brand->department_id)