首页 文章

SQLSTATE [42S22]:未找到列:1054未知列'produk.id'在'where clause'(SQL:select * from`produk`其中`produk` .id` = 65 limit 1)

提问于
浏览
0

Illuminate \ Database \ QueryException(42S22)SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'produk.id'(SQL:select * from produk其中produk.id = 65 limit 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

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

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

    “Eloquent还会假设每个表都有一个名为id的主键列 . 您可以定义一个受保护的$ primaryKey属性来覆盖此约定 . ” “此外,Eloquent假设主键是递增的整数值,这意味着默认情况下主键将自动转换为int . 如果您希望使用非递增或非数字主键,则必须将模型上的public $ incrementing属性设置为false . 如果主键不是整数,则应将模型上的protected $ keyType属性设置为string .

    Laravel 5.6 Docs - Eloquent - Model Conventions

  • 0

    试试这个而不是findOrFail

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

相关问题