2016-08-19 51 views
0

我在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> 

你可以看到这是与三个类似形式的一页,差别只在现场的语言。

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

我该怎么办?

回答

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,或者您正在引用该语言。如果你想插入“多个”行(3,如你所指),你需要做多个插入。

对于多个领域,而不仅仅是name你可以添加更多的<input> S中的一样:

<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 
    ]); 
} 
+0

我可以用'名[]'?没有索引? – Dev

+0

我认为这不是很好的解决方案,因为我有很多字段,不仅名称[],而且它每次都会在循环中调用数据库 – Dev

+0

@Dev我在编辑中回答了您的问题。 –

相关问题