我已经构建了一个基本的laravel CRUD系统,我已经创建了一个基本的创建功能但是我想这样做,以便如果数据库中已存在记录并且你创建了相同的记录再次说明你在创建表单中添加的整数由已经存在的记录示例添加:你有一个库存系统,其产品的安装量为50,你用ammount为40创建相同的产品,并且40添加了50,所以在数据库中它会说90.我不完全确定如何这样做。
这是我为我的应用程序制作的商店功能:
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'));
}
如果您需要更多信息,请告诉我,我会将其添加到问题
答案 0 :(得分: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。
如果您有任何问题,请在评论中提问,我将很乐意解释。