SQLSTATE [42S22]:找不到列:1054“ where子句”中的未知列“ produk.id”(SQL:从produk中选择*,其中produk.id = 65限制1)

时间:2018-08-02 23:24:16

标签: php laravel

  

Illuminate \ Database \ QueryException(42S22)SQLSTATE [42S22]:列   找不到:1054“ where子句”中的未知列“ produk.id”(SQL:   从produk中选择*,其中produkid = 65个限制1)

我不知道错误在哪里 按照我的代码显示错误:

public function update(Request $request, $id)
{
    $this->validate($request, $this->aturan, $this->pesan);

    $produk = produk::find($id);
    $produk->nama_produk = $request['nama'];
    $produk->id_kategori = $request['kategori'];
    $produk->harga_jual = $request['harga'];
    $produk->update();

    return Redirect::route('produk.index');
}

/**
 * Remove the specified resource from storage.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function destroy($id)
{
    $produk = Produk::find($id);
    $produk->delete();
    return Redirect::route('produk.index');  
}

2 个答案:

答案 0 :(得分:0)

根据口才文档,如果您的模型使用的主键与id不同,则必须进行配置。 Eloquent期望主键为id,并且默认情况下它是一个自动递增的整数。

YourModel extends Eloquent ...
{
    protected $primaryKey = 'yourOtherKey';
    ...
}
  

“雄辩的人还将假定每个表都有一个名为id的主键列。您可以定义一个受保护的$primaryKey属性来覆盖此约定。”

     

“此外,Eloquent假定主键是一个递增的整数值,这意味着默认情况下,主键将自动强制转换为int。如果要使用非增量或非数字主键,必须将模型上的公共$incrementing属性设置为false。如果主键不是整数,则应将模型上受保护的$keyType属性设置为string。”

Laravel 5.6 Docs - Eloquent - Model Conventions

答案 1 :(得分:0)

请尝试改用findOrFail

$produk = produk::findOrFail($id);