我试图从两个表(brands 和 raw_materials)中获取数据,通过外键(brand_id)连接。一个品牌可以有多种原材料。我希望所有内容都显示在一页上的各自品牌下。相反,我将结果单独显示。使用 Laravel 5.7 和 Eloquent。My Tables[brands]id name----------1 Apple 2 Colgate3 LintX[raw_materials]id name brand_id quantity-----------------------------------------1 50g pouch 1 2002 10g laminate 3 3203 75mm oil 1 5004 Mint Rubber 3 4005 Fire pouch 2 5506 400 String 1 5007 90g pouch 2 200页面控制器$brandData = DB::table('brands') ->join('raw_materials','raw_materials.brand_id','brands.id') ->select('brands.id as brand_id','brands.name as brand_name','raw_materials.name as raw_material','raw_materials.quantity') ->orderBy('brands.id') ->get();<br>return view('rawmaterials.index', [ 'brandData'=>$brandData, ]);看法@foreach ($brandData as $brand)<p>Brand Name: {{$brand->brand_name}}</p><p>{{$brand->raw_material}} | Quantity: {{$brand->quantity}}</p><br>@endforeach预期结果:品牌名称:Apple50g 袋装| 数量:20075mm 油 | 数量:500400 串 | 数量:500品牌名称:ColgateFire 小袋 | 数量:55075mm 油 | 数量:500400 串 | 数量:500next brand ..实际结果:品牌名称:Apple50g 袋装| 数量:200品牌名称:Apple75mm 油 | 数量:500品牌名称:Apple400 串 | 数量:500品牌名称:ColgateFire Pouch | 数量:550And so on..
2 回答
qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
您可以先创建关系:
function raw_materials() {
return $this->hasMany(RawMaterial.class);
}
在您的控制器中,像这样使用 with() 函数:
$brandData = Brand::with('raw_materials')->all();
return view('rawmaterials.index', [
'brandData'=>$brandData
]);
然后在您的视图中,您可以获取 raw_materials 表数据:
@foreach($branData as $brand)
<h3>{{ $brand->name }}</h3>
@foreach($brand->raw_materials as $raw_material)
<div>{{ $raw_material->name }}</div>
<div>{{ $raw_material->quantity }}</div>
@endforeach
@endforeach
- 2 回答
- 0 关注
- 195 浏览
添加回答
举报
0/150
提交
取消