laravel - 如何在 laravel 8 中自动更新产品状态
问题描述
我想在使用触发功能或使用模型时将产品状态自动更新为“不可用”Qty <= 0
并将状态更新为“重新订购级别” 。Qty > 1 && Qty <= 5
我该如何解决这个问题?
这是我的产品表。
Schema::create('products', function (Blueprint $table) {
$table->bigIncrements('ProductID');
$table->string('Name');
$table->string('Brand');
$table->mediumText('image')->nullable();
$table->string('Description');
$table->string('Warranty');
$table->integer('Price');
$table->integer('Qty');
$table->string('Status')->nullable()->default("In Stock");
$table->unsignedBigInteger('AdminID');
$table->foreign('AdminID')->references('EmpID')->on('users');
$table->timestamps();
});
解决方案
您可以将其作为观察者产品类(更多在https://stackoverflow.com/a/58892374/4780438)或简单地将这样的观察动作添加到产品模型类
protected static function boot()
{
parent::boot();
/*
*
* retrieved : after a record has been retrieved.
* creating : before a record has been created.
* created : after a record has been created.
* updating : before a record is updated.
* updated : after a record has been updated.
* saving : before a record is saved (either created or updated).
* saved : after a record has been saved (either created or updated).
* deleting : before a record is deleted or soft-deleted.
* deleted : after a record has been deleted or soft-deleted.
* restoring : before a soft-deleted record is going to be restored.
* restored : after a soft-deleted record has been restored.
*
* */
static::saved(function ($model){
if ($model->Qty <= 0) {
$model->Status = 'Not Available';
$model->save();
}
if ($model->Qty <= 5 && $model->Qty >= 1) {
$model->Status = 'Reorder level';
$model->save();
}
});
}
您可以在文档https://laravel.com/docs/8.x/eloquent#observers中阅读更多内容
推荐阅读
- bash - 检查表达式是否在 bash 中返回字符串直到条件
- python - 通过日期范围动态计算项目数
- node.js - 如何从 restapi 中删除 mongodb 集合
- javascript - 验证文件是否已下载/正在下载或被 Adblock 阻止
- machine-learning - 异常检测与聚类?
- excel - Set variable to a sheet's Codename, Using it in the code isn't working
- mysql - 获取列中具有连续数字的唯一 ID 列表
- android - content_main.xml 有问题
- android - React Native、Native Android Module在View中添加TextView
- python - 尝试根据用户输入从列表列表中返回相关信息