首页 文章

Laravel 5.4雄辩的大规模创作

提问于
浏览
0

给定下一个数组,表示Page模型:

[
  "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(...) 将创建并保存新的页面记录到数据库,但关键短语存储在不同的表中(并由"Keyphrase"模型表示),所以我尝试使用 Page::create(...)->keyphrases()->create($request->all()) 但它不起作用,因为create方法只创建一个实例,据我所知它 .

考虑到我的数据被分成语言,在数据库中大规模创建“关键短语”的最佳方法是什么?

我认为这不重要,但我正在使用 dimsav/laravel-translations

2 回答

  • 1

    我会使用循环来插入多个记录 . 另一种方法是将请求数组拆分为一个数组,该数组包含设置表的不同列的子数组 . 像这样

    //Modify the data so that the sturcture is as $keyhrases
    $keyhrases = array( [ 'keyphrase' => 'Foo' ], [ 'keyphrase' => 'Bar' ], etc );
    
    $page->keyphrases()->insert($keyhrases);
    

    但是,修改数组比简单的for循环更重要 .

  • 1

    不确定如何存储关键短语 . 但这是一个很好的例子 .

    /*[
        [
            "Key phrase 1",
            "Key phrase 2"
        ],
        [
            "Frase clave 1",
            "Frase clave 2"
        ]
    ]*/
    $keyPhrases = array_column($data, 'keyphrases');
    
    $page = Page::create(...);
    
    $page->keyphrases()->insert($keyPhrases);
    

相关问题