如何使用laravel 5.2访问带有json值的数组?

时间:2016-07-09 12:44:32

标签: php arrays json laravel-5.2

我在访问带有json值的数组时遇到了困难。值来自另一个表,我已经与另一个表建立了关系。但是,我无法弄清楚如何正确访问它。这是我的代码。

产品与库存之间的模型关系。

产品

 public function inventory(){
    return $this->hasMany('App\InventoryRecord\InventoryRecord');
}

广告

public function products(){
     return $this->belongsTo('App\Product\Product','product_id');
}

查看

 @foreach($products as $val)

    <?php //$quantity[$i++] = $val->id; ?>

       <tr class="tbl-prod-row">
         <td><input type='checkbox' style='width:30px; height:20px;' class='radio_check_all prod-id-checkbox' id='radio_check_all prod-id-checkbox' value="{{ $val->id }}"></td>
         <td style="display:none;">{{ $val->id }}</td>
         <td style="display:none;">{{ $val->category }}</td>
         <td>{{ $val->pharmaceutical }}</td>
         <td>{{ $val->description }}</td>
         <td>{{ $val->type }}</td>
         <td>{{ $val->unit }}</td>
         <td>{{ $val->price }}</td>
         <td>{{ $val->created_at }}</td>
         <td>{{ $val->po_status }}</td>
         <td>{{ $val->inventory }}</td>

        </tr>

    @endforeach

enter image description here

此处未显示任何错误,但每次我想通过将$val->inventory更改为$val->inventory->quantity来访问数组中的某些值时,都会返回错误。

enter image description here

请帮我解决这个问题。非常感谢。

1 个答案:

答案 0 :(得分:1)

这是因为产品具有产品型号中定义的许多库存:

$this->hasMany('App\InventoryRecord\InventoryRecord');

因此,当您致电$val->inventory时,它将返回日志未定义属性../ Collection :: $ quantity 中返回的错误中所述的库存集合,因为您已经试图从集合中获取属性。

您必须指定要从中获取遗产的广告资源,例如:

$val->inventory->first()->quantity
$val->inventory[0]->quantity

或者您可以在模型中定义返回产品库存总量的新方法,例如:

public function inventoriesQuantity(){
   $quantite = 0

   foreach($this->inventory as $inventory){
       $quantity += $inventory->quantity;
   }

   return $quantite;
}

然后调用它而不是$val->inventory

<td>{{ $val->inventoriesQuantity() }}</td>

注意:产品型号中的功能inventory()应为inventories(),因为它会返回一系列库存。

希望这有帮助。