我的模型上有一个代码:
protected static function boot() {
parent::boot();
if($this->status == 1) {
static::updated(function () {
//do something
}
}
}
我需要检查当前记录的状态是否== 1,然后执行static::updated()
。
现在我得到错误:$ this不能在静态函数中。
如何检查受保护的静态功能启动中的状态?
答案 0 :(得分:1)
像大安在评论中提到的那样,这是不可能的,但是您可以通过其他方式解决此问题:
protected static function boot() {
parent::boot();
static::updated(function ($model) {
if ($model->status == 1) {
//do something
}
});
}
答案 1 :(得分:0)
$this
您应将$this
替换为self::
,以引用静态类中包含的变量($status
):
protected static function boot() {
parent::boot();
if(self::$_status == 1) {
static::updated(function () {
//do something
}); //also close off your method call correctly.
}
}
我需要检查当前记录的状态是否== 1,然后执行static :: updated()。
$status
的值在哪里设置/保存/可访问?您显示的代码似乎表明$status
是在类本身中设置的,但是作为静态类,它将是静态的。
您可能需要停止类/方法为静态或,以将数据提供给函数,如下所示:
protected static function boot($status = null) {
parent::boot();
if($status == 1) {
static::updated(function () {
//do something
}); // close off your method properly.
}
}