LARAVEL 5.5: 如何优化向数据库中添加一个数组?

LARAVEL 5.5: How to optimally add an array to the database?

我的数据库中有 2 个 table。我的第一个table,table用词:

结构table“单词”:

--------------
[id] | [word]
--------------
[11] | [тоҷик]
[12] | [ӯзбек]
[13] | [падар]
[14] | [модар]
[15] | [китоб]
[16] | [қалам]
[17] | [ручка]
--------------

第二个 table,table 的描述:

结构table“描述”:

---------------------------------------
[id] | [word_id] | [description]
---------------------------------------
[1]  | [11]      | [Миллати давлати...]
[2]  | [12]      | [Ӯзбекистон давл...]
[3]  | [13]      | [Шахсе ки сарвар...]
[4]  | [14]      | [Инсоне мобошанд...]
[5]  | [15]      | [Китоб - ин пред...]
[6]  | [16]      | [Предмети барои ...]
[7]  | [17]      | [Предмет барои н...]
---------------------------------------

数组中的描述词示例:

$array_words_description = array
(
    'тоҷик' => 'Миллати давлати Ҷумҳурии Тоҷикистон. Забони давлати мазкур.',
    'ӯзбек' => 'Ӯзбекистон давлати дар Осиёи маркази ҷойгиршуда. Забони давлатиашон забони ӯзбеки мебошад.',
    'падар' => 'Шахсе ки сарвари оила мебошад ва оилаи худро бо меҳру муҳаббат ва бо хӯрду - хӯрок таъмин менамояд.',
    'модар' => 'Инсоне мобошанд, ки мову шуморо ба дунё оварда ба воя мерасонанд. Бузургтарин шахс дар олам ин модар аст.',
    'китоб' => 'Китоб - ин предмете, ки ба ҳамаи мо илму маърифатро, донишу сабақро меомӯзонад.',
    'қалам' => 'Предмети барои нашитаҷот пешбинишуда.',
    'ручка' => 'Предмет барои навистан пешбини шудааст. Бисёртар ин предметро донишомӯзандагон истифода мебаранд.',
);

如何通过将数组键中的单词标识符从 word table 添加到 word_id 来将此描述添加到 description table领域。

你可以这样做:

foreach ($array_words_description as $word => $description) {
    $word = Word::create(['word' => $word]);
    $word->description()->create(['description' => $description]);
}

如果您在 $fillable 数组中添加列名称并在 Word 模型中定义 description 关系,那么它会起作用。

但我建议您只对单词及其描述使用一个 table,并仅使用一个查询插入数据,而不是创建 N*2 个查询:

array_walk(&$array_words_description, function ($word, $description) {
    return compact('word', 'description');
});

Word::insert($array_words_description);

可能您的 eloquent 模型中没有任何关系 类 你可以通过这样做来实现你想要的

$word_id = DB::table('words')->insertGetId(['word' => $word]);
DB::table('descriptions')->insert(['word_id' => $word_id, 'description' => $description]);