首页 > 解决方案 > 错误 - 试图获取非对象的属性 - 在 laravel

问题描述

当我从类别表中获取类别名称时,我遇到了问题.. 代码在这里..

谢谢。

 public function viewProducts(){

     $products = Product::get();
     $products = json_decode(json_encode($products));

     foreach($products as $key => $val){
        $category_name = Category::where(['id'=>$val->category_id])->first();
        $products[$key]->category_name= $category_name->name;
     }
     echo "<pre>";print_r($products);die;

     return view('admin.products.view_products')->with(compact('products'));
}

ErrorException (E_NOTICE) Trying to get property of non-object enter image description here

标签: laraveleloquentlaravel-5.7

解决方案


错误是直截了当的。您还没有获得 $category_name 变量的任何对象,并且您正在尝试访问 name 属性的值。没有定义,因为没有对象。

添加一个简单的条件来修复它

public function viewProducts(){
  $products = Product::get();
  $products = json_decode(json_encode($products));

  foreach($products as $key => $val){
    $category_name = Category::where(['id'=>$val->category_id])->first();
      if($category_name != null){
        $products[$key]->category_name= $category_name->name;
      }
    }
  echo "<pre>";print_r($products);die;

  return view('admin.products.view_products')->with(compact('products'));
}

要将数据发送到刀片:

# Controller:
$data['category_name'] = $category_name;
$data['products'] = $products;
->withKeyName($data);

# Blade:
{{ $KeyName['category_name'] }}
{{ $KeyName['products'] }}

推荐阅读