Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 5.4雄辩的大众创作_Laravel_Laravel 5_Eloquent_Laravel Eloquent - Fatal编程技术网

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]