【问题标题】:how to auto update product status in laravel 8如何在 laravel 8 中自动更新产品状态
【发布时间】:2021-06-28 05:32:40
【问题描述】:

我想在产品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();
}); 

【问题讨论】:

  • 您需要为product 创建一个观察者类,并在产品被删除、创建或更新后运行该函数

标签: laravel eloquent laravel-8


【解决方案1】:

你可以作为观察者产品类来做 (更多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 中阅读更多内容

【讨论】:

  • 您能进一步解释一下吗?我解决不了这个
  • 有什么问题?
  • 我使用你的代码。但不更新。我也在 appServiceProvider 中使用它。 public function boot() { product::observe(productObserver::class); } 并更改 config.app.php 并在产品模型中使用您的代码。但我无法解决这个问题。
  • 在这里发布你的 Post.php 模型
  • namespace App\Models;use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class product extends Model {use HasFactory;protected $primaryKey = "ProductID"; public function users(){return $this-&gt;belongsTo(User::class,'EmpID');} protected static function boot(){ parent::boot(); static::saved(function ($model){ if ($model-&gt;Qty &lt;= 0) {$model-&gt;Status = 'Not Available'; $model-&gt;save();} 这是product.php
猜你喜欢
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-29
  • 2013-04-23
  • 1970-01-01
  • 2021-04-16
相关资源
最近更新 更多