首页 > 解决方案 > 在 Laravel Livewire 中持久化 Eloquent Builder 实例

问题描述

\Illuminate\Database\Eloquent\Builder我想在实例化时(在生命周期挂钩期间)保留一个实例,mount以便我可以将它用于查询。问题是我无法将其设置为公共财产,因为它会抛出一个Livewire\Exceptions\PublicPropertyTypeNotAllowedException(如下)。我也无法将它保存在会话中,因为它是一个 PDO 实例,并且 PDO 实例不能被序列化或反序列化。 在此处输入图像描述

有什么想法吗?

编辑:

控制器:

public function index() {
    $tableQuery = User::query();

    return view('table', compact('tableQuery'));
    }

table.blade.php:

<livewire:table
   :tableQuery=$tableQuery
>

应用\Http\Livewire\表:

class Table extends Component{
    private $tableQuery;
    
    public function mount($tableQuery){
        $this->tableQuery = $tableQuery;
    }
    
    public function render(){
        return view('livewire.table');
    }
}

标签: phplaraveleloquentlaravel-livewire

解决方案


你可以在里面使用模型livewire

class Table extends Component{
    public $tableQuery;
    
    public function mount(){
        $this->tableQuery =  User::query();;
     }
    
    public function render(){
        return view('livewire.table');
    }
}

推荐阅读