2016-11-17 71 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

感谢您的帮助,链接帮了我大忙 –