【问题标题】:Trying to get property of non-object foreach laravel试图获取非对象foreach laravel的属性
【发布时间】:2017-11-08 14:42:59
【问题描述】:

编辑功能

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 模型:

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>

遇到错误

试图获取非对象的属性(查看: C:\xampp\htdocs\hutama-prima\resources\views\logistik\edit_spesifikasi.blade.php)

【问题讨论】:

  • 您传递 $spesifikasi 变量以查看的代码在哪里?
  • 这个公共函数编辑($id) { $spesifikasi = logistik_spesifikasi::find($id);返回视图('logistik.edit_spesifikasi',get_defined_vars()); } 对不起,我的英语不好。我是印度尼西亚人:)
  • 我相信它的'观点('logistik.edit_spesifikasi', get_defined_vars());我不确定你为什么使用 get_defined_vars()?
  • 像这样??公共功能编辑($id){ $spesifikasi = logistik_spesifikasi::find($id);返回视图('logistik.edit_spesifikasi',紧凑('spesifikasi')); }
  • 你可以这样发送:return view('logistik.edit_spesifikasi', ['spesifikasi'=>$spesifikasi]);

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


【解决方案1】:

第一次检查

$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

【讨论】:

  • 错误是一样的。出现错误尝试获取非对象的属性(查看:C:\xampp\htdocs\hutama-prima\resources\views\logistik\edit_spesifikasi.blade.php)
  • 你检查了吗??
  • 所以,我使用表兄弟的关系
  • 删除foreach。现在检查我的答案
  • 它不应该工作......我想我明白了。给几分钟。
猜你喜欢
  • 2018-07-14
  • 2018-10-13
  • 1970-01-01
  • 2017-08-20
  • 2015-09-22
  • 2017-03-20
  • 2014-03-25
  • 2015-01-25
  • 2014-06-23
相关资源
最近更新 更多