2016-07-09 6 views
1

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

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

あなたが$val->inventoryを呼び出すときにエラーで説明したようにだから、在庫のコレクションを返しますが、ログ未定義のプロパティで返さ../ Collection :: $ quantityコレクションから属性を取得しようとしているためです。

あなたが例えば、あなたがからquentityを取得したい在庫を指定する必要があります。

$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()である必要があります。これは在庫のコレクションを返すためです。

これが役に立ちます。