【发布时间】:2019-07-16 08:46:31
【问题描述】:
我在使用 MySQL 的数据库中有以下列。
id|product_1|product_2|product_3|Total
1 25 25 25 75
但是,假设我想更新表单中的一个特定行,即 product_2 by 1。
id|product_1|product_2|product_3|Total
1 25 26 25 76
如何使用 Raw 或 Eloquent MySQL 完成上述任务?
我尝试了很多方法,例如更改代码、在 Google、YouTube 上搜索,但我找不到解决方案。
所以下面的代码是用来自 MySQL 的填充数据加载我的表。
public function index()
{
$ProductsPost = ProductsPost::all();
$sum_total = ProductsPost::select(DB::raw('product_1 + product_2 + product_3 as total_products'))->where('id', 1)->total_products;
return view('products/index')->with(
[
'products_post' => $ProductsPost,
'sum_total' => $sum_total
]
);
}
下面是我的更新功能。
public function update(Request $request, $id)
{
$ProductsPost = ProductsPost::find($id);
$ProductsPost->update($request->all());
ProductsPost::where('id', $id)->sum('product_1', 'product_2', 'product_3');
if ($ProductsPost->wasChanged()) {
// changes have been made
return redirect('products')->with(['success' => 'Changes were successfully saved.']);
} else {
return redirect('products/'.$id.'/edit')->with(['error' => 'No changes made.']);
}
}
我应该在此处向总列添加更新吗?
同样,我要查找的结果是基于 id 的行中列的总和。例如,如果 product_2 更改为不同的值,我希望将其反映到 Total 列。 Total 列应将 product_1、product_2、product_3 三列的值集合相加。
【问题讨论】:
-
理想情况下,您不会有
Total列,需要时手动计算。但是,在您的情况下,是的,您也需要更新总数。相关:stackoverflow.com/questions/12838729/… -
任何时候你发现自己有枚举列(例如,2),警钟应该开始响起。考虑您的架构设计是否最优。
标签: php mysql laravel laravel-5 eloquent