【发布时间】:2019-09-05 14:29:02
【问题描述】:
我正在尝试从 Laravel DB Facade 实现 insertOrIgnore 方法,
这是文档+说明 sn-p 的链接:
https://laravel.com/docs/5.8/queries#inserts
insertOrIgnore 方法将忽略重复记录错误,同时 将记录插入数据库:
DB::table('users')->insertOrIgnore([
['id' => 1, 'email' => 'taylor@example.com'],
['id' => 2, 'email' => 'dayle@example.com']
]);
这是产生错误的一段代码(它适用于常规insert())
if ($datetime->format('H:i') >= '05:50' && $datetime->format('H:i') <= '07:10') {
DB::table('attendanceTable')->insertOrIgnore(['user_id' => $request->loggedUserId, 'day' => $datetime, 'shift_id' => $Shifts->id, 'created_at' => $datetime, 'updated_at' => $datetime]);
这是 Laravel 的 Telescope 产生的错误
Call to undefined method Illuminate\Database\Query\Builder::insertOrIgnore()
有人可以指出我做错了什么,或者至少给我一个提示吗?提前致谢!
【问题讨论】:
-
你使用的是哪个版本的 Laravel?
-
@KuldeepMishra 非常感谢!
-
@CaddyDZ 5.8,与文档相同。
-
在 v. 5.8 和 6.0 中,函数的语法仅使用 Postgres、MySql 和 Sqlite 驱动程序定义,如果您使用 SqlServer 应该引发异常
This database engine does not support inserting while ignoring errors而不是Undefined Method