LARAVEL 5.5:如何以最佳方式将数组添加到数据库中?

时间:2017-10-22 13:22:18

标签: php arrays database laravel laravel-5.5

我的数据库中有2个表。我的第一张桌子,桌子上有文字:

结构表" 单词":

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

第二张表,包含说明的表格:

结构表" 描述":

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

数组中描述字的示例:

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

如何通过在数组键中将description表中的单词标识符添加到word字段,将此说明添加到word_id表。

2 个答案:

答案 0 :(得分:4)

您可以这样做:

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

您可以在$fillable数组中添加列名,并在description模型中定义Word关系。

但是我建议你只使用一个表来表示单词及其描述,只用一个查询插入数据,而不是创建N * 2个查询数:

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

Word::insert($array_words_description);

答案 1 :(得分:0)

您的雄辩模型课程中可能没有任何关系 你可以通过这样的方式实现你想要的目标

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