如何在一个视图中从两个表中获取多列数据

我试图从两个表(brands 和 raw_materials)中获取数据,通过外键(brand_id)连接。一个品牌可以有多种原材料。我希望所有内容都显示在一页上的各自品牌下。相反,我将结果单独显示。


使用 Laravel 5.7 和 Eloquent。


My Tables

[brands]

id    name

----------

1   Apple 

2   Colgate

3   LintX


[raw_materials]

id    name        brand_id      quantity

-----------------------------------------

1    50g pouch        1        200

2    10g laminate     3        320

3    75mm oil         1        500

4    Mint Rubber      3        400

5    Fire pouch       2        550

6    400 String       1        500

7    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

预期结果:


品牌名称:Apple

50g 袋装| 数量:200

75mm 油 | 数量:500

400 串 | 数量:500


品牌名称:Colgate

Fire 小袋 | 数量:550

75mm 油 | 数量:500

400 串 | 数量:500


next brand ..



实际结果:


品牌名称:Apple

50g 袋装| 数量:200


品牌名称:Apple

75mm 油 | 数量:500


品牌名称:Apple

400 串 | 数量:500


品牌名称:Colgate

Fire Pouch | 数量:550


And so on..


大话西游666
浏览 196回答 2
2回答

qq_花开花谢_0

您可以先创建关系:function raw_materials() {&nbsp; &nbsp; &nbsp;return $this->hasMany(RawMaterial.class);}在您的控制器中,像这样使用 with() 函数:$brandData = Brand::with('raw_materials')->all();return view('rawmaterials.index', [&nbsp; &nbsp; 'brandData'=>$brandData]);然后在您的视图中,您可以获取 raw_materials 表数据:@foreach($branData as $brand)&nbsp; &nbsp;<h3>{{ $brand->name }}</h3>&nbsp; &nbsp;@foreach($brand->raw_materials as $raw_material)&nbsp; &nbsp; &nbsp; &nbsp;<div>{{ $raw_material->name }}</div>&nbsp; &nbsp; &nbsp; &nbsp;<div>{{ $raw_material->quantity }}</div>&nbsp; &nbsp;@endforeach@endforeach
打开App,查看更多内容
随时随地看视频慕课网APP