Laravel试图获取非对象的属性(来自雄辩的模型)

时间:2016-12-25 13:20:06

标签: php laravel object

已经在stackoverflow上阅读了有关此问题的一些问题,但这些答案都不适用于我。 我跑的时候:

$item_price->price

然后

dd($item_price = ItemPrice::where('item_name',$itemname)->first());

尝试获取非对象的属性但是当我运行时:

foreach ($inventorydecoded->assets as $asset) {

    $i = 0;
    $a = 0;
    while ($a < 1) {

      if ($inventorydecoded->descriptions[$i]->classid == $asset->classid) {
        $a = 1;
        $classid = $inventorydecoded->descriptions[$i]->classid;
        $itemname = $inventorydecoded->descriptions[$i]->market_hash_name;
        $tradable = $inventorydecoded->descriptions[$i]->tradable;
        $name_color = $inventorydecoded->descriptions[$i]->name_color;

  ;

      }
      $i++;
    } // end of while
      if ($tradable === 1 && strpos_arr($itemname, $blacklist) == false ) {
            $item_price = ItemPrice::whereItemName($itemname)->first();
      //     dd(ItemPrice::where('item_name',$itemname)->first());
            $items[] = ['assetid' => $asset->assetid,'classid'=> $classid,'itemname'=>$itemname,'name_color'=>$name_color,'price'=> $item_price->price];
            $serialized_inventory = serialize($items);

      }
  } // end of foreach

它返回了具有属性名称,价格等的对象。我真的不明白这里发生了什么。

完整代码:

{{1}}

2 个答案:

答案 0 :(得分:2)

您在循环中使用此查询,因此其中一个为空并返回null。所以你需要做一个简单的检查:

if (is_null($item_price)) {
    // There is no price for this item, do something.
}

答案 1 :(得分:0)

试试这个:

$item_price = ItemPrice::whereItemName($itemname)->first();