我在访问带有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
此处未显示任何错误,但每次我想通过将$val->inventory
更改为$val->inventory->quantity
来访问数组中的某些值时,都会返回错误。
请帮我解决这个问题。非常感谢。
答案 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()
,因为它会返回一系列库存。
希望这有帮助。