2016-11-17 66 views
2

我一直在構建一個基本的laravel CRUD系統,我已經創建了一個基本的創建函數,但是我想這樣做是爲了讓一個記錄已經存在於數據庫中,並且創建相同的記錄再次,Integer把你創建的表格添加到已有的記錄示例中:u有一個庫存系統,其產品的數量爲50,並且你創建的產品的數量爲40,並且40用50添加,這樣在數據庫中就會說90.我不完全確定如何去做。Laravel 5.2創建函數

這是存儲功能我已經爲我的應用程序進行:

public function store(Request $request) 
{ 
    // Aantal = ammount (int) 
    //Producten_Id = foreign_key from the Producten database table 
    //Locaties_Id = foreign_key from the locaties database table 

    Voorraad::Create($request->only(['aantal', 'Producten_Id', 'Locaties_Id'])); 
    //var_dump($request); 

    return redirect(Route('voorraad.index')); 
} 

如果u需要更多的信息,只是讓我知道,我會添加到這個問題

+0

它應該與您的數據庫一起來。不是拉拉維爾。 – Sachith

+0

您將需要執行檢查以查看記錄是否已經存在,如果它確實存在,那麼更新記錄,例如用新值60更新值40,但不刪除40而是添加40到60以使得100更新值新的價值會說100,正確? – Birdy

回答

1

假設你設置彌補了這一領域中的數據庫結構,默認值它的那樣簡單:

$voorraad = Voorraad::firstOrCreate($request->only(['Producten_Id', 'Locaties_Id']); 

$voorraad->increment('aantal', $request->aantal); 

如果要設置默認量新產品,在控制器做到這一點,而不是:

$voorraad = Voorraad::firstOrCreate($request->only(['Producten_Id', 'Locaties_Id']); 

if (! $voorraad->aantal) { 
    $voorraad->aantal = 123; // default 
} 
else { 
    $voorraad->aantal += $request->aantal; 
} 

$voorraad->save(); 

一般來說firstOrCreate方法從數據庫中提取記錄與傳遞的屬性,如果它已經存在,或以其他方式創建它。見Laravel docs

如果您有任何問題只需在評論中提問,我會很樂意解釋。

+0

我試過兩套代碼,它並沒有達到我想要的效果,我想要的是,如果我的數據庫中有一個產品的數量與它,當我添加相同的產品ammout,我第二次輸入與數據庫中的產品的數量相加,並且在我添加了1個產品並且我嘗試添加另一個產品後,第一行代碼的總量不變, –

+0

這正是我發佈的代碼應該做什麼。你怎麼說產品是一樣的?只用'Producten_Id'?然後從'firstOrCreate'中刪除'Locaties_Id'。 請注意,在代碼中使用英文名稱作爲對象,屬性,方法等是個好主意。或者至少在發佈之前翻譯它們,因爲現在我有點猜測你的代碼是關於什麼的;) 也可以查看https://laravel.com/docs/5.3/eloquent#other-creation-methods以瞭解什麼我們用'firstOrCreate'實現。 – Paul

+0

感謝您的幫助,鏈接幫了我大忙 –