Ben*_*nyi 6 laravel eloquent laravel-5 laravel-5.2
我正在使用 Laravel 5.2 制作网站
我想做的是
INSERT
3行同时created_at
updated_at
。使用该Query Builder
方法insert
,是的,它通过传递如下数组一次插入 3 行:
GroupRelation::insert([
[
'application_id' => $applications[0]->a_id,
'group_id' => $group->id,
],
[
'application_id' => $applications[1]->a_id,
'group_id' => $group->id,
],
[
'application_id' => $applications[2]->a_id,
'group_id' => $group->id,
],
]);
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常。但这不能触及时间戳。这意味着created_at
updated_at
将为空。
但是,如果我将方法更改insert
为create
:
GroupRelation::create([
...
]);
Run Code Online (Sandbox Code Playgroud)
它收到错误:
ErrorException in Model.php line 2983:
preg_match() expects parameter 2 to be string, array given
Run Code Online (Sandbox Code Playgroud)
如果我没记错的话,好像create
只能同时接受 1 行,对吗?
我知道insert
不是Eloquent
. Eloquent
触发时间戳但Query Builder
不触发。
所以我的问题是:
insert
方法一次可以接受 3 行,但是如何手动触发时间戳? 1.
我尝试'created_at' => date('Y-m-d H:i:s'),
在数组的每个项目中添加。但控制器不清楚和可怕。create
方法以触发时间戳?create
在循环内部调用是个好主意吗?附注。protected $guarded = []
已分配给空数组,因此不会收到批量分配异常。
非常感谢。
Ale*_*nin 11
insert()
是 Query Builder 的一部分,因此它不使用 Eloquent 功能。
您不能将 3 个项目传递给create()
方法,只能传递一个。使用create()
内部循环是一个糟糕的主意。
在进行批量插入时,您应该手动添加这些字段:
[
'application_id' => $applications[0]->a_id,
'group_id' => $group->id,
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
],
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8885 次 |
最近记录: |