Php Laravel Livewire,初始请求后出现全局范围错误

Php Laravel Livewire,初始请求后出现全局范围错误,php,laravel,eloquent,laravel-livewire,Php,Laravel,Eloquent,Laravel Livewire,我面临一个使用全球范围的问题, 我正在开发一个多租户应用程序,我需要在当前租户/公司的基础上确定数据库的范围。 租户/公司在请求中,可以像so一样访问request()->Company() 控制器和刀片服务器的一切都很好,现在将我的应用程序升级到Livewire 作用域在第一次请求时非常有效,我在后续请求中遇到了这个错误 TypeError Argument 1 passed to App\Tenant\Scope\TenantScope::__construct() must be an i

我面临一个使用全球范围的问题, 我正在开发一个多租户应用程序,我需要在当前租户/公司的基础上确定数据库的范围。 租户/公司在请求中,可以像so一样访问
request()->Company()

控制器和刀片服务器的一切都很好,现在将我的应用程序升级到Livewire 作用域在第一次请求时非常有效,我在后续请求中遇到了这个错误

TypeError
Argument 1 passed to App\Tenant\Scope\TenantScope::__construct() must be an instance of 
Illuminate\Database\Eloquent\Model, null given, called in 
D:\laragon\www\vistate\app\Tenant\Traits\ForTenants.php on line 19 
为了重现这一点,我有以下几点


检查这两件事。
尝试更改保护以公开公司属性。在Livewire中,据我所知,受保护和私有数据不会持久化。
在apply方法中(可能这是不相关的,但选中了),您可以与同一个公司实例进行比较

public function apply(Builder $builder, Model $model) 
{ 
      return $builder->where($this->company->getForeignKey(), '=', $this->company->id); 
}

我认为您需要比较$this->company->getForeignKey(),'=',$model->id,因为您要将$model实例作为参数传递?

谢谢@Prospero整个逻辑在惯性Js和控制器刀片上运行良好我们团队中缺少Vue开发人员,这就是为什么我们放弃惯性Js而使用Livewire的原因。另一方面,livewire在这里给出了错误,在livewire首次加载时,作用域将工作,如果我只是从数据库中获取数据,那么如果我使用wire:model.defer并提交表单,那么范围就可以工作了。一切都可以正常工作,但是如果我必须在livewire类上实时执行,那么问题就来了。请输入livewire组件的一些代码,看看您是如何处理的
public function apply(Builder $builder, Model $model) 
{ 
      return $builder->where($this->company->getForeignKey(), '=', $this->company->id); 
}