Laravel First或Create方法返回 找不到列



我正在尝试在保存之前检查表中是否存在数据。我可以保存到表

public function read($book_id)
{
MyBook::create([
'book_id' => $id,
'user_id' => Auth::id()
]);
$readBooks = Book::where('id', $book_id)->get()->first();
return view('read')->with('data', $readBooks);
}

但是当我尝试使用 firstOrCreate 在保存之前进行检查时,它返回了此错误

SQLSTATE[42S22]:找不到列:1054 "其中"中的未知列"1" 子句' (SQL: 从my_books中选择 *,其中 (1为 null,1为 空( 限制 1(

这是我正在使用的方法

public function read($book_id)
{
$mybook = MyBook::firstOrCreate([
['book_id' => $book_id],
['user_id' => Auth::id()]
]);
$readBooks = Book::where('id', $book_id)->get()->first();
return view('read')->with('data', $readBooks);
}

我的my_book表架构

public function up()
{
Schema::create('my_books', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('book_id')->unsigned();
$table->integer('user_id')->unsigned();
$table->timestamps();
});
}

我不知道我做错了什么,我希望我能在这里找到帮助。谢谢。

你在里面传递数组也是 2 个数组。但这是不正确的。你必须这样使用

$mybook = MyBook::firstOrCreate(
['book_id' => $book_id],
['user_id' => Auth::id()]
);

您正在传递单个数组数组作为第一个参数来firstOrCreate.它为参数采用关联数组。

$mybook = MyBook::firstOrCreate(
['book_id' => $book_id],
['user_id' => Auth::id()]
);

参数 1 和 2 是关联数组。

Laravel 6.x 文档 - 雄辩 - 其他创建方法firstOrCreate

最新更新