Laravel Foreach循环在每次迭代中显示相同的数据
我有5个模型<代码>采购,Laravel Foreach循环在每次迭代中显示相同的数据,laravel,loops,if-statement,foreach,Laravel,Loops,If Statement,Foreach,我有5个模型采购,存货,板材,刮板和地板。 采购与存货有一对一的关系,然后存货与板材、刮板和地板有进一步的一对一关系 $purchase=purchase::where('factoryName',$factoryName)->with('inventory.slab')->get() 上面的查询返回的正是我想要的 结果: [ { "id": 36, "fname": "Sama", "lname": "Jojo", "factoryName": "Sama
存货
,板材
,刮板
和地板
。
采购
与存货
有一对一的关系,然后存货
与板材
、刮板
和地板
有进一步的一对一关系
$purchase=purchase::where('factoryName',$factoryName)->with('inventory.slab')->get()代码>
上面的查询返回的正是我想要的
结果:
[
{
"id": 36,
"fname": "Sama",
"lname": "Jojo",
"factoryName": "Sama Inc.",
"cnic": "3216542",
"area": "Johar town",
"city": "Lahore",
"province": "Punjab",
"phone1": "45678912345",
"phone2": "45678912345",
"inventory_ID": 10,
"created_at": "2019-03-19 12:11:45",
"updated_at": "2019-03-19 12:11:45",
"inventory": {
"id": 10,
"purchase_id": 36,
"marbleType": "1",
"totalSquareFt": 25,
"priceperSquareFt": 230,
"totalPurchasePrice": 25000,
"standardSize_ID": "5",
"salePrice": 250,
"miliMeter": "6mm",
"slab_ID": 1,
"scarting_ID": null,
"floorTile_ID": 9,
"created_at": "2019-03-19 12:11:45",
"updated_at": "2019-03-19 12:11:45",
"slab": {
"id": 1,
"marbleName_ID": "2",
"inventory_ID": "10",
"created_at": "2019-03-19 12:11:45",
"updated_at": "2019-03-19 12:11:45"
}
}
},
{
"id": 55,
"fname": "Sama",
"lname": "Jojo",
"factoryName": "Sama Inc.",
"cnic": "32165421",
"area": "Johar town",
"city": "Lahore",
"province": "Punjab",
"phone1": "45678912345",
"phone2": "45678912345",
"inventory_ID": 26,
"created_at": "2019-04-25 10:47:41",
"updated_at": "2019-04-25 10:47:41",
"inventory": {
"id": 26,
"purchase_id": 55,
"marbleType": "1",
"totalSquareFt": 12,
"priceperSquareFt": 12,
"totalPurchasePrice": 120,
"standardSize_ID": "1",
"salePrice": 15,
"miliMeter": "6mm",
"slab_ID": 9,
"scarting_ID": null,
"floorTile_ID": null,
"created_at": "2019-04-25 10:47:41",
"updated_at": "2019-04-25 10:47:41",
"slab": {
"id": 9,
"marbleName_ID": "3",
"inventory_ID": "26",
"created_at": "2019-04-25 10:47:41",
"updated_at": "2019-04-25 10:47:41"
}
}
}
]
之后,我获取了marbleName\u ID
,并从Marble
表中获取该ID的数据。像这样
foreach ($purchase as $pur) {
if ($pur->inventory->marbleType == 1) {
$slabe = 'Slab';
}
if ($pur->inventory->slab_ID != NULL) {
$marble_id = $pur->inventory->slab->marbleName_ID;
$marble = MarbleType::where('id', $marble_id)->get();
}
}
此查询显示了我想要的确切结果。
以上查询结果如下:
[{"id":2,"marbleType":"Indian Marble","created_at":"2019-02-22 13:11:11","updated_at":"2019-02-22 13:11:11"}]
[{"id":3,"marbleType":"Russian Marble","created_at":"2019-02-22 13:16:12","updated_at":"2019-02-25 09:15:00"}] ```
But in blade its showing the data of only one id in each iteration
http://prntscr.com/njy1i5
The code of blade is following:
<tbody>
@foreach($purchase as $pur )
@foreach($marble as $mar)
<tr>
<td>{{ $slabe }}</td>
<td>{{ $mar->marbleType }}</td>
<td>{{ $pur->inventory->totalSquareFt }}</td>
<td>{{ $pur->inventory->totalPurchasePrice }}</td>
</tr>
@endforeach
@endforeach
</tbody>
[{“id”:2,“大理石类型”:“印度大理石”,“创建于”:“2019-02-22 13:11:11”,“更新于”:“2019-02-22 13:11:11”}]
[{“id”:3,“大理石类型”:“俄罗斯大理石”,“创建于”:“2019-02-22 13:16:12”,“更新于”:“2019-02-25 09:15:00”}]```
但在blade中,每次迭代只显示一个id的数据
http://prntscr.com/njy1i5
刀片代码如下:
@foreach($pur购买)
@foreach($mar)
{{$slabe}
{{$mar->marbleType}
{{$pur->inventory->totalSquareFt}
{{$pur->inventory->totalPurchasePrice}
@endforeach
@endforeach
这是因为你必须在你的购买和你的大理石之间建立一种关系,然后你可以这样做:
@foreach($purchase as $pur )
@foreach($pur->marbles as $mar)
<tr>
<td>{{ $slabe }}</td>
<td>{{ $mar->marbleType }}</td>
<td>{{ $pur->inventory->totalSquareFt }}</td>
<td>{{ $pur->inventory->totalPurchasePrice }}</td>
</tr>
@endforeach
@endforeach
为了更好地理解代码,我建议在处理物品收集(如购买物品和大理石)时使用复数。有人在这里寻求帮助吗?
foreach ($purchase as &$pur) {
if ($pur->inventory->marbleType == 1) {
$slabe = 'Slab';
}
if ($pur->inventory->slab_ID != NULL) {
$marble_id = $pur->inventory->slab->marbleName_ID;
$pur->marble = MarbleType::where('id', $marble_id)->get();
}
}