柱未找到laravel 5.4

cna*_*yak 1 laravel eloquent laravel-5 laravel-5.4

我收到以下错误:

SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'books.id'(SQL:select*from bookswhere books.id= 98745632564 limit 1)

当我将id值作为id传递时.我在我的数据库中有列名bookID但在上面的错误中它比较books.id = 98745632564.我无法理解book.id来自哪里.

public function showBook($id){
   $book = Book::findOrFail($id);
   return $book;
}
Run Code Online (Sandbox Code Playgroud)

当我使用查询传递id值时,代码完全正常,如下所示

public function showBook($id){
    $book = Book::where('bookID', $id)->find();
    return $book;
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*łek 7

你应该设置:

protected $primaryKey = 'bookID';
Run Code Online (Sandbox Code Playgroud)

在你的Book模型中:

$book = Book::findOrFail($id);
Run Code Online (Sandbox Code Playgroud)

版本工作.

方法findfindOrFail正在使用主键,默认设置为id,因此如果您有任何自定义主键,则应在Eloquent模型中进行设置.