有人可以帮助我吗?我在尝试显示我的编辑表单时尝试获取非对象laravel的属性“ id”时遇到错误
这是我的控制器
public function edit($id)
{
$produk = produk::where('id',$id)->first();
return view('produk.edit',compact('produk'));
}
public function update(Request $request, $id)
{
produk::where('id',$id)
->update([
'nama' => $request->nama,
'id_kategori' => $request->kategori,
'qty' => $request->qty,
'harga_beli' => $request->beli,
'harga_jual' => $request->jual,
]);
return redirect()->route('produk.index');
}
这是我的模特
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class produk extends Model
{
protected $guarded = ['id','created_at','updated_at'];
public function kategoris()
{
return $this->hasOne('App\kategori', 'id', 'id_kategori');
}
}
这是我的观点
<select class="form-control" name="kategori">
<option value="Pilih Kategori"></option>
@foreach ($produk as $k)
<option value="{{ $k->id }}" @if($produk->id_kategori == $k->id) selected @endif>{{$k->nama}}</option>
@endforeach
</select>
答案 0 :(得分:2)
正因为如此
$produk = produk::where('id',$id)->first();
这将返回一个对象而不是对象数组。这就是为什么您的视图出现错误的原因。而是使用:
$produk = produk::where('id',$id)->get();
返回对象数组。
答案 1 :(得分:0)
您正在尝试介绍槽产品的属性,但是您似乎需要介绍槽类别的集合。
添加类别以在控制器中查看:
public function edit($id)
{
$produk = produk::find($id);
$kategoris = kategori::all();
return view('produk.edit',compact('produk', 'kategoris'));
}
在视图中迭代$ kategoris槽(不是$ produk):
<select class="form-control" name="id_kategori">
<option value="Pilih Kategori"></option>
@foreach ($kategoris as $kategori)
<option value="{{ $kategori->id }}" @if($produk->id_kategori == $kategori->id) selected @endif>{{$kategori->nama}}</option>
@endforeach
</select>
此外,如果外键为id_kategori
,则最好使用name=id_kategori
而不是name=kategori
这里不需要关联,因为您将类别ID与id_kategori属性进行了比较。但是在这种情况下,您应该将hasOne替换为belongsTo。
public function kategoris()
{
return $this->belongsTo('App\kategori', 'id_kategori');
}
答案 2 :(得分:0)
获得安排价值的正确方法是
$k["id"]
而非$k->id
我尝试使用数组错误地获取字段,收到了以下数组
[{"id": 1, "name": "Ivania", "code": 387}, {"id": 2, "name": "Robert", "code": 389}]
使用foreach检查数组
$users = $request->input('users');
foreach($users as $key => $user)
$person = new Person();
//incorrect form
//$person->id = $user->id
//the correct form
$person->id = $user["id"];
$person->name = $user["name"];
$person->code = $user["code"];
$person-> save ();
}