【发布时间】:2022-12-04 02:23:02
【问题描述】:
为什么这不起作用??还有什么我需要做的吗??? (注意:我不想从model 调用任何boot 方法)。在模型中它与booted 方法一起工作正常
// route
Route::get('/tests', function () {
return Test::find(1)->update([
'name' => Str::random(6)
]);
});
// models
namespace App\Models;
use App\Http\Traits\Sortable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Test extends Model
{
use HasFactory;
use Sortable;
protected $guarded = ["id"];
}
// traits
namespace App\Http\Traits;
trait Sortable
{
protected static function bootSort()
{
static::updated(function ($model) {
dd("updated", $model->toArray());
});
static::updating(function ($model) {
dd("updating", $model->toArray());
});
static::saving(function ($model) {
dd("saving", $model->toArray());
});
static::saved(function ($model) {
dd("saved", $model->toArray());
});
}
}
【问题讨论】:
-
bootSort是什么,为什么框架会自动调用它?我从来没有使用过 trait 的引导方法,但至少你需要遵循命名约定。