Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel Foreach循环在每次迭代中显示相同的数据_Laravel_Loops_If Statement_Foreach - Fatal编程技术网

Laravel Foreach循环在每次迭代中显示相同的数据

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

我有5个模型<代码>采购,
存货
板材
刮板
地板
采购
存货
有一对一的关系,然后
存货
板材
刮板
地板
有进一步的一对一关系

$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();
            }
        }