laravel在整数上调用成员函数categories()

时间:2017-08-11 04:05:25

标签: php laravel-5 many-to-many

我正在尝试更新枢轴表中的现有记录,以及与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>

我只发布部分内容,因为如果我发布所有内容,那么问题就是代码。如果您需要更多,请告诉我。

1 个答案:

答案 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'));