php - Laravel 8 验证输入 - 如果输入的值大于或等于另一个表中的值,则验证失败
问题描述
在 Laravel 8 中,我想对大于或等于不同表中另一列的整数值的输入整数值进行验证,然后验证失败,因为执行了另一列的整数值。
所以我有一张这样的桌子
巴朗表
+------------+---------------------------+----------------+----------------+------------+
| kodebarang | namabarang | hargapenjualan | hargapembelian | jumlahstok |
+------------+---------------------------+----------------+----------------+------------+
| ALRT-0012 | SAPU IJUK KUNING | 3500 | 3000 | 227 |
| ALRT-0014 | SAPU TEBAS HIJAU | 4500 | 4000 | 141 |
其中“jumlahstok”是有多少“namabarang”的信息。
然后我有一个要插入新数据的表
NotaKeluar 表
+---------------+------------+------------+----------------+
| notranskeluar | kodebarang | jumlahbeli | tothargakeluar |
+---------------+------------+------------+----------------+
| TK-2101.00001 | ALTK-0055 | 5 | 17500 |
| TK-2101.00001 | MAIN-0094 | 6 | 360000 |
因此,当插入来自 NotaKeluar 的新数据时,由于从 NotaKeluar 表中插入了 jumlahbeli 列和 kodebarang 列,因此 Barang 表中的 jumlahstok 列会减少。(jumlahstok 专栏 - jumlahbeli 专栏)
然后我有一个我想像这样验证的函数:
public function store_notakeluar(Request $request)
{
$value1 = $request-> transaksikeluar;
$value2 = $request-> namabarang_konsumen;
$value3 = $request-> jumlahbarang_konsumen;
Request()->validate([
'namabarang_konsumen' => 'required|exists:Barang,namabarang',
'jumlahbarang_konsumen' => 'required|numeric|min:1|max:Barang,namabarang,'.$value2.',Barang,jumlahstok',
],[
'namabarang_konsumen.required' => 'Nama barang wajib diisi!',
'namabarang_konsumen.exists' => 'Nama barang tidak ada di stok!',
'jumlahbarang_konsumen.required' => 'Jumlah barang wajib diisi!',
'jumlahbarang_konsumen.numeric' => 'Jumlah barang harus angka!',
'jumlahbarang_konsumen.min' => 'Jumlah barang minimal 1!',
'jumlahbarang_konsumen.max' => 'Jumlah barang yang dibeli melebihi jumlah stok!',
]);
DB::select('call spNotaKeluar(?,?,?)',[$value1,$value2,$value3]);
return redirect('home/daftar_transaksikeluar/detil_notakeluar/'.$value1)->with('tambah', 'Nota telah berhasil ditambahkan');
}
但问题是,如果我输入 namabarang_konsumen(从 NotaKeluar 表转换为 kodebarang)和 jumlahbarang_konsumen(从 NotaKeluar 表转换为 jumlahbeli 列)大于或等于 Barang 表中的 jumlahstok 列(将 namabarang_konsumen 输入转换为来自 NotaKeluar 的 kodebarang 是来自 Barang 的 kodebarang),没有发生失败的验证,而是插入到 NotaKeluar 表并将 jumlahstok 列从 Barang 表更改为 0。(我将其编程为 0 <0)
示例是这样的,如果我输入 namabarang_konsumen "SAPU IJUK KUNING"(从 NotaKeluar 表转换为 kodebarang)并输入 jumlahbarang_konsumen "300",但在 Barang 表中,namabarang 列是 "SAPU IJUK KUNING" 的 jumlahstok 列是 227。我尝试为此提交,但不是因为 jumlahbarang_konsumen 输入超过 Barang 表中的 jumlahstok 列而导致验证失败,而是插入并且来自 Barang 的 jumlahstok 列变为 0。
所以,我不想让输入像这样,如果来自 Barang 表的 jumlahbarang_konsumen input >= jumlahstok 列,它就会插入。但是我想让失败的验证发生,即 jumlahbarang_konsumen 超过了 Barang 表中的 jumlahstok 列(其中来自 Barang 表的 namabarang 是 namabarang_konsumen 输入),因此它没有插入到 NotaMasuk 表中。
我试图在许多教程中找到它,但它没有用。我怎样才能做到这一点?
注意:jumlahbarang_konsumen 的验证在公共函数 store_notakeluar的第 9 行
解决方案
推荐阅读
- listview - 如何在带有 Windows UI 库的 ListViewItem 样式中使用 Reveal 悬停?
- wordpress - 从 URL 设置产品图片
- javascript - 单击按钮时打开移动键盘
- awk - Gawk Print 令人费解的行为
- python - t.xpath 没有从第二页获得结果?
- reactjs - 实时反应站点上的缓存问题
- r - 使用 scale_..._manual 将自定义图例添加到具有两个 geom_point 图层的 ggplot
- spring - 我在我的 Eclipse 中安装了 STS 3.9.9 并制作了一个简单的 Spring Maven 项目,但它是空的。如何获得正确的模板?
- node.js - NestJS TypeORM for MongoDB 在插入后崩溃
- ios - 如何在 MacOS 上直接运行 objcgen 进行 .NET 嵌入