【问题标题】:How to access array with json values using laravel 5.2?如何使用 laravel 5.2 访问具有 json 值的数组?
【发布时间】:2016-11-11 22:10:51
【问题描述】:

我在访问包含 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-&gt;inventory 更改为 $val-&gt;inventory-&gt;quantity 来访问数组中的某些值时,它都会返回错误。

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

【问题讨论】:

    标签: php arrays json laravel-5.2


    【解决方案1】:

    发生这种情况是因为产品有很多产品模型中定义的库存:

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

    因此,当您调用 $val-&gt;inventory 时,它将返回一个库存集合,如日志中返回的错误所述,Undefined property ../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-&gt;inventory

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

    注意:产品模型中的函数inventory() 应该是inventories(),因为它会返回一个库存集合。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      相关资源
      最近更新 更多