Laravel 5.4 Eloquent 批量创建
Laravel 5.4 Eloquent mass creation
给定下一个数组,表示页面模型:
[
"en" => [
"title": "Hello world",
"content": "Lorem ipsum ...",
"keyphrases": [
"Key phrase 1",
"Key phrase 2"
]
],
"es" => [
"title": "Hola Mundo",
"content": "Lorem ipsum ...",
"keyphrases": [
"Frase clave 1",
"Frase clave 2"
]
]
]
使用 Page::create(...)
将创建新的页面记录并将其保存到数据库中,但是关键短语存储在不同的 table 中(并由 "Keyphrase" 模型表示),所以我尝试使用 Page::create(...)->keyphrases()->create($request->all())
但它没有用,因为据我所知,create 方法只创建一个实例。
考虑到我的数据分为多种语言,在数据库中大规模创建 "keyphrases" 的最佳方法是什么?
我认为这不重要,但我正在使用 dimsav/laravel-translations
不确定您希望如何存储关键短语。但这是一个很好的例子。
/*[
[
"Key phrase 1",
"Key phrase 2"
],
[
"Frase clave 1",
"Frase clave 2"
]
]*/
$keyPhrases = array_column($data, 'keyphrases');
$page = Page::create(...);
$page->keyphrases()->insert($keyPhrases);
我会使用循环来插入多条记录。另一种方法是将请求的数组拆分为一个包含子数组的数组,子数组设置 table 的不同列。像这样
//Modify the data so that the sturcture is as $keyhrases
$keyhrases = array( [ 'keyphrase' => 'Foo' ], [ 'keyphrase' => 'Bar' ], etc );
$page->keyphrases()->insert($keyhrases);
但是再次修改数组比简单的 for 循环更麻烦。
给定下一个数组,表示页面模型:
[
"en" => [
"title": "Hello world",
"content": "Lorem ipsum ...",
"keyphrases": [
"Key phrase 1",
"Key phrase 2"
]
],
"es" => [
"title": "Hola Mundo",
"content": "Lorem ipsum ...",
"keyphrases": [
"Frase clave 1",
"Frase clave 2"
]
]
]
使用 Page::create(...)
将创建新的页面记录并将其保存到数据库中,但是关键短语存储在不同的 table 中(并由 "Keyphrase" 模型表示),所以我尝试使用 Page::create(...)->keyphrases()->create($request->all())
但它没有用,因为据我所知,create 方法只创建一个实例。
考虑到我的数据分为多种语言,在数据库中大规模创建 "keyphrases" 的最佳方法是什么?
我认为这不重要,但我正在使用 dimsav/laravel-translations
不确定您希望如何存储关键短语。但这是一个很好的例子。
/*[
[
"Key phrase 1",
"Key phrase 2"
],
[
"Frase clave 1",
"Frase clave 2"
]
]*/
$keyPhrases = array_column($data, 'keyphrases');
$page = Page::create(...);
$page->keyphrases()->insert($keyPhrases);
我会使用循环来插入多条记录。另一种方法是将请求的数组拆分为一个包含子数组的数组,子数组设置 table 的不同列。像这样
//Modify the data so that the sturcture is as $keyhrases
$keyhrases = array( [ 'keyphrase' => 'Foo' ], [ 'keyphrase' => 'Bar' ], etc );
$page->keyphrases()->insert($keyhrases);
但是再次修改数组比简单的 for 循环更麻烦。