【问题标题】:Persisting Eloquent Builder Instance in Laravel Livewire在 Laravel Livewire 中持久化 Eloquent Builder 实例
【发布时间】:2020-12-31 21:19:17
【问题描述】:

有一个\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');
    }
}

【问题讨论】:

  • 你能放你的组件代码吗?

标签: php laravel eloquent laravel-livewire


【解决方案1】:

你可以在livewire中使用模型

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

【讨论】:

  • 我忘了说组件应该是动态制作的,以便其他模型也可以重用它,但它给了我一个火花,我很感激,谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-02-11
  • 2014-04-13
  • 1970-01-01
  • 1970-01-01
  • 2019-08-11
  • 2015-07-20
  • 1970-01-01
  • 2020-10-17
相关资源
最近更新 更多