我正在做一個網站與Laravel 5.2Laravel雄辯一次插入3行與時間戳
我想要做的是在同一時間
INSERT
3行- 新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,
],
]);
代碼工作正常。但是這不能觸及時間戳。這意味着created_at
updated_at
將爲空。
但是,如果我改變了方法insert
到create
:
GroupRelation::create([
...
]);
它收到的錯誤:
ErrorException in Model.php line 2983:
preg_match() expects parameter 2 to be string, array given
如果我沒有錯,它似乎像create
可以只接受1排同時對吧?我知道insert
不是Eloquent
的一部分。 Eloquent
觸發時間戳,但Query Builder
沒有。
所以我的問題是:
insert
方法可以同時接受3行,但我怎麼可以手動觸發時間戳?- 通過
1.
我試圖添加'created_at' => date('Y-m-d H:i:s'),
在陣列的每個項目。但控制者不清楚和可怕。 - 如何將3個項目的數組傳遞給
create
方法以激發時間戳? - 在循環內部調用
create
是個好主意嗎?
PS。 protected $guarded = []
已分配給空數組,因此不會收到質量分配異常。
非常感謝。
謝謝!是的,我已經完成了!但我有3排。如你所見,我有3個數組。它們中的每一個幾乎都是相同的,其中'$ applications'指數有點不同。如果手動將'created_at'' updated_at'添加到數組集合,則代碼重複三次。還有什麼想法? – Benyi
我確定已經有這樣的問題了,爲什麼不是搜索重複的選擇來回答?我只是好奇... – Kyslik
@Benyi你可以創建一個數組,然後只是遍歷它,並添加時間戳到每個項目。這是你得到的最好的解決方案。 –