如何在具有相同标识的DB中创建一些注释?

时间:2016-08-19 07:27:35

标签: laravel laravel-5.2

我在Laravel 5.2中有多语言,并尝试在表格中创建具有相同ID的每种语言的行。

所以,我的意思是:

Add article
<form>
   <input type="name" value="">
   <input type="hidden" name="lang" value="1">
   <input type="submit" value="Add">
</form>

<form>
   <input type="name" value="">
   <input type="hidden" name="lang" value="2">
   <input type="submit" value="Add">
</form>

<form>
   <input type="name" value="">
   <input type="hidden" name="lang" value="3">
   <input type="submit" value="Add">
</form>

您可以看到这是一个包含三种相似形式的页面,区别仅在于字段语言。

因此,当我提交每个表单时,我需要创建具有相同标识的三行。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

我建议使用单一表格:

<form>
   <input type="name[1]" value="">
   <input type="name[2]" value="">
   <input type="name[3]" value="">
   <input type="submit" value="Add">
</form>

然后在您的控制器中添加:

$names = $request->input('name');
foreach($names as $lang => $name) {
    //Example insert query
    DB::table('table')->insert([
        'name' =>$name, 
        'lang_id' => $lang
    ]);
}

通过这种方式,您可以轻松添加更多语言。

编辑:您可以使用没有索引的名称,但您不会知道该语言。这些索引应该是语言ID,或者您引用该语言。如果你想插入&#34;多个&#34;行(3,如你所指出的)你需要进行多次插入。

对于多个字段,不仅仅是name,您可以用同样的方式添加更多<input>

<form>
   <input type="name[1]" value="">
   <input type="name[2]" value="">
   <input type="name[3]" value="">

   <input type="description[1]" value="">
   <input type="description[2]" value="">
   <input type="description[3]" value="">

   <input type="submit" value="Add">
</form>

然后在你的控制器中:

$names = $request->input('name');
$descriptions = $request->input('description');

//If $names and $descriptions rely on the same languages you can do.

foreach($names as $lang => $name) {
    //Example insert query
    DB::table('table')->insert([
        'name' => $name, 
        'description' => $description[$lang]
        'lang_id' => $lang
    ]);
}