2016-08-19 39 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我在編輯中回答了您的問題。 –

相關問題