试图获得非对象foreach laravel的属性

时间:2017-11-08 14:42:59

标签: php laravel model-view-controller foreach laravel-5.2

编辑功能

public function edit($id)
{
   $spesifikasi = logistik_spesifikasi::find($id);
   return view('logistik.edit_spesifikasi', get_defined_vars());
}

logistik_spesifikasi模型

class logistik_spesifikasi extends Model
{
    protected $table = 'logistik_spesifikasi';
    protected $primarykey = 'id';
    protected $fillable = ['nama_produk', 'satuan', 'tipe', 'jumlah', 'id_satuan','id_produk'];

    public function listMaterial()
    {
        return $this->hasMany('App\ListMaterial', 'id_produk');
    }


    public function satuanList()
    {
        return $this->belongsTo('App\LogistikSatuan', 'id_satuan');
    }

}

ListMaterial Model:

class ListMaterial extends Model
{
    protected $table = 'list_material';

    protected $primarykey = 'id';
    public $timestamps = false;

    protected $fillable = ['id_material', 'id_produk', 'volume'];

    public function material()
    {
        return $this->hasMany('App\material', 'id_material');
    }

}

edit_spesifikasi.blade.php

<thead>
<tr>
<th>Nama Material</th>
</tr>
</thead>
<tbody>
@foreach($spesifikasi as $row )
    <tr class="gradeU">
     <td>{{ $row->listMaterial->first()->material->first()->nama_material }}</td>
    </tr>
@endforeach
</tbody>

gettting error

  

尝试获取非对象的属性(查看:   C:\ XAMPP \ htdocs中\ hutama-初步\资源\视图\ LOGISTIK \ edit_spesifikasi.blade.php)

1 个答案:

答案 0 :(得分:0)

首先检查

$spesifikasi = logistik_spesifikasi::find($id);

$ spesifikasi不会空。如果$ spesifikasi为空,则会出现此错误。

然后,

public function edit($id)
{
   $spesifikasi = logistik_spesifikasi::find($id);
   if($spesifikasi)
   {
       return view('logistik.edit_spesifikasi', compact('spesifikasi'));
   }
  else
   { 
      //empty....
   }

}

使用此代码。

    @foreach($spesifikasi->listMaterial as $row )
      <tr class="gradeU">
      <td>{{ $row->nama_material }}</td>
      </tr>
    @endforeach