2016-07-09 1 views
1

Ich habe Schwierigkeiten beim Zugriff auf das Array mit JSON-Werten. Die Werte stammen von einer anderen Tabelle, in der ich eine Beziehung mit einer anderen Tabelle hergestellt habe. Ich kann jedoch nicht herausfinden, wie ich richtig darauf zugreifen kann. Hier ist mein Code.Wie kann Array mit JSON-Werten mit Laravel 5.2 angesprochen werden?

Modellbeziehung zwischen Produkt und Inventar.

Produkt

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

Inventar

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

Ansicht

@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

Es wird hier kein Fehler angezeigt, aber jedes Mal, wenn ich auf Werte im Array zugreifen wollte, indem ich die $val->inventory in $val->inventory->quantity änderte, gab es einen Fehler zurück.

enter image description here

Bitte helfen Sie mir mit diesem. Danke vielmals.

Antwort

1

das geschehen, weil viele Produkte Inventar wie definiert in Produktmodell hat:

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

Also, wenn Sie $val->inventory nennen es eine Sammlung von Vorräten zurück, wie in dem Fehler zurückgegeben in lügt nicht definierte Eigenschaft beschrieben ../ Sammlung :: $ Menge, weil Sie versuchen, Attribut aus Sammlung zu erhalten.

Sie haben das Inventar Sie die quentity aus, zB erhalten möchten angeben:

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

Oder Sie könnten neue Methode im Modell definieren, die die Summe der Produktbestandsmengen zurückgeben, zB:

public function inventoriesQuantity(){ 
    $quantite = 0 

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

    return $quantite; 
} 

nennen es dann statt $val->inventory:

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

HINWEIS: Funktion inventory() im Produktmodell sollte inventories() sein, weil es eine Sammlung von Inventaren zurückgibt.

Hoffe, das hilft.