在方法保护的启动模型Laravel中获取$ this

时间:2019-04-04 10:28:41

标签: php laravel

我的模型上有一个代码:

 protected static function boot() {
      parent::boot();

      if($this->status == 1) {
         static::updated(function () {
            //do something
         }
      }
 }

我需要检查当前记录的状态是否== 1,然后执行static::updated()。 现在我得到错误:$ this不能在静态函数中。

如何检查受保护的静态功能启动中的状态?

2 个答案:

答案 0 :(得分:1)

像大安在评论中提到的那样,这是不可能的,但是您可以通过其他方式解决此问题:

protected static function boot() {
      parent::boot();

      static::updated(function ($model) {
          if ($model->status == 1) {
              //do something
          }
      });
 }

答案 1 :(得分:0)

1)$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.
      }
 }

2)检查当前记录的状态是否为1

  

我需要检查当前记录的状态是否== 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.
      }
 }