Laravel 5.4雄辩的大众创作
给定表示页面模型的下一个数组:Laravel 5.4雄辩的大众创作,laravel,laravel-5,eloquent,laravel-eloquent,Laravel,Laravel 5,Eloquent,Laravel Eloquent,给定表示页面模型的下一个数组: [ "en" => [ "title": "Hello world", "content": "Lorem ipsum ...", "keyphrases": [ "Key phrase 1", "Key phrase 2" ] ], "es" => [ "title": "Hola Mundo", "content": "Lorem ipsum ...", "
[
"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(…)
将创建新的页面记录并将其保存到数据库中,但关键短语存储在不同的表中(并由“keyphase”模型表示),因此我尝试使用Page::create(…)->keyphases()->create($request->all())
但它不起作用,因为create方法只创建一个实例,据我所知
考虑到我的数据被分为多种语言,在数据库中大规模创建“关键短语”的最佳方法是什么
我认为这无关紧要,但我使用的是
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);
不确定要如何存储关键短语。但这里有一个很好的例子
/*[
[
"Key phrase 1",
"Key phrase 2"
],
[
"Frase clave 1",
"Frase clave 2"
]
]*/
$keyPhrases = array_column($data, 'keyphrases');
$page = Page::create(...);
$page->keyphrases()->insert($keyPhrases);
我将使用一个循环来插入多个记录。另一种方法是将请求的数组拆分为一个带有子数组的数组,子数组设置表的不同列。像这样
//Modify the data so that the sturcture is as $keyhrases
$keyhrases = array( [ 'keyphrase' => 'Foo' ], [ 'keyphrase' => 'Bar' ], etc );
$page->keyphrases()->insert($keyhrases);
但是修改数组比简单的for循环要复杂得多。我会使用循环插入多个记录。另一种方法是将请求的数组拆分为一个带有子数组的数组,子数组设置表的不同列。像这样
//Modify the data so that the sturcture is as $keyhrases
$keyhrases = array( [ 'keyphrase' => 'Foo' ], [ 'keyphrase' => 'Bar' ], etc );
$page->keyphrases()->insert($keyhrases);
但是修改数组比简单的for循环要复杂得多。关键短语要存储在一个表中,该表包含:id、content、page\u id(外来)。尝试了您的示例,但它产生了错误,因为laravel希望数组索引是字段名,而不是数字..这只是一个示例数据集。当然,我不知道你的字段名是什么,这给了你一个很好的例子。尽管如此,关键的一点是,你可以使用我向你展示的插入方式来完成你的要求。关键短语将存储在一个表中,该表包含:id、content、page_id(外文)。尝试了您的示例,但它产生了错误,因为laravel希望数组索引是字段名,而不是数字..这只是一个示例数据集。当然,我不知道你的字段名是什么,这给了你一个很好的例子。尽管如此,关键是你可以按照我向你展示的方式使用
insert
。在这种情况下,循环确实是正确的方法,但复杂性在于需要将英语和西班牙语保存在同一个数组中,因此我将关键字短语输入名称(HTML)改为:关键字短语[$i][$locale][content]实际上,在这种情况下,循环是正确的方法,但复杂性是在需要将英语和西班牙语保存在同一数组中的情况下,所以我将关键字短语输入名称(HTML)更改为:关键字短语[$I][$locale][content]