我正在尝试更新枢轴表中的现有记录,以及与laravel的多对多关系。
我的商店功能有效:
public function store(Request $request)
{
$produk = new product($request->input()) ;
$feat = (boolean)$request->input('featured');
$input = $request->all();
$input['featured'] = $feat;
$inputproduk = product::create($input);
$inputproduk->categories()->attach($request->input('kat_id'));
return redirect()->back()->with('message', 'Memasukkan Data Produk Berhasil');
}
但为什么我的更新功能没有用?
public function update(Request $request, $id)
{
$produk = Product::FindorFail($id);
$produk = new product($request->input()) ;
$input = $request->except('_method', '_token', 'picture', 'kat_id');
$inputproduk = product::whereId($id)->update($input);
$inputproduk->categories()->sync($request->input('kat_id'));
return redirect()->back()->with('message', 'Mengedit Data Produk Berhasil');
}
错误是:
调用整数
上的成员函数categories()
这是什么意思?请帮帮我。
查看:
<div class="form-group">
<label for="KategoriProduk">Kategori Produk</label>
<select class="form-control" name="kat_id[]" multiple>
@foreach($kategoris as $value)
<option value="{{$value->id}}">{{$value->namekat}}</option>
@endforeach
</select>
</div>
我只发布部分内容,因为如果我发布所有内容,那么问题就是代码。如果您需要更多,请告诉我。
答案 0 :(得分:3)
这是因为以下一行。
$inputproduk = product::whereId($id)->update($input);
当您致电更新时,它将返回integer
而不是product
对象。
您可以做的是先获取产品然后更新。
$inputproduk = product::whereId($id)->first();
$inputproduk->update($input);
$inputproduk->categories()->sync($request->input('kat_id'));