私は初めてLaravelで作業しています。長さ、幅、高さなどの製品(段ボール箱)の基本的な詳細を含むProductsテーブルがあるシナリオがあります。製品のその他の詳細は、関数内の基本的な詳細を使用して計算されます。Laravel 5.2でコレクション - > put()が動作していません
コントローラでの私のコードは次のようになります。
コントローラー:
$products = DB::table('master_products')
->join('part_types', 'master_products.part_type_id', '=', 'part_types.id')
->join('box_types', 'master_products.box_type_id', '=', 'box_types.id')
->select('master_products.*', 'part_types.part_type', 'box_types.box_type')
->get();
/* Calculate Specs and add them to the collection */
foreach ($products as $product) {
$rollSize = $this->calcRollSize($product->height, $product->breadth, $product->ply, $product->part_type_id, $product->box_type_id);
$products->put('roll_size', $rollSize);
}
return view('/layouts/masters/products-master', ['products' => $products]);
ビュー:
<table class="table table-bordered table-condensed table-hover">
<thead>
<tr>
<th>Sl.No.</th>
<th>Product Code</th>
<th>Part Type</th>
<th>Box Type</th>
<th>Length</th>
<th>Breadth</th>
<th>Height</th>
<th>Ply</th>
<th>Roll Size</th>
<th>A-Base</th>
<th>A-Flute</th>
<th>B-Base</th>
<th>B-Flute</th>
<th>Top</th>
</tr>
</thead>
<tbody>
@foreach($prod_specs as $prod_spec)
<tr>
<td><?php echo $i; ?></td>
<td><?php echo $prod_spec->product_code; ?></td>
<td><?php echo $prod_spec->part_type; ?></td>
<td><?php echo $prod_spec->box_type; ?></td>
<td><?php echo $prod_spec->length; ?></td>
<td><?php echo $prod_spec->breadth; ?></td>
<td><?php echo $prod_spec->height; ?></td>
<td><?php echo $prod_spec->ply; ?></td>
<td><?php echo $prod_spec->roll_size; ?></td>
<td><?php echo $prod_spec->gsm_a_base; ?></td>
<td><?php echo $prod_spec->gsm_a_flute; ?></td>
<td><?php echo $prod_spec->gsm_b_base; ?></td>
<td><?php echo $prod_spec->gsm_b_flute; ?></td>
<td><?php echo $prod_spec->gsm_top; ?></td>
</tr>
<?php $i++; ?>
@endforeach
</tbody>
</table>
私が得たこの例外:コールメンバ関数へ非オブジェクトにput()を追加
しかし、this stackoverflow questionによれば、それはうまくいくはずです。私はここで何が欠けていますか?
更新:
:この
foreach ($products as $product) {
$rollSize = $this->calcRollSize($product->height, $product->breadth, $product->ply, $product->part_type_id, $product->box_type_id);
$product['roll_size'] = $rollSize;
}
しようとしましたが、エラー
大丈夫です。私の悪い。その場合、 'roll_size'を' $ products'配列にどのように追加できますか? –
他の配列に何かを追加するのと同じです: '$ products ['roll_size'] = $ rollSize' –
' dd($ product) 'をループの中に入れて、質問を出力に更新します。また、このループの実行後、 'roll_size'の_one_インデックスのみが存在することにも注意してください。ロールサイズの配列が必要な場合は、デザインを再考する必要があります。 –