Model Collection not refreshed after attach or detach (many to many) in Laravel Livewire

Viewed 221

I've problem on refreshing model collection after detach on Laravel livewire. I want to remove detached item from view without refresh full page, but it seem not work. it need to refresh full page to re render the view. I have tried to $model->refresh() after detach(), and its work but $model->refresh() duplicate already loaded relationship query. Here the route:

Route::get('/order/{order}', function (Order $order) {
    $order = $order->load(['worklist.khs:id,mou_id,worklist_id,khs', 'worklist.category:id,category', 'materials']);
    return view('livewire.order.index-order',  ['order' => $order]);
})->name('view.order');

Livewire Component:

class ViewOrder extends Component
{
    public Order $order;
    public function delete($id)
    {
        $work = Worklist::find($id);
        $this->order->worklist()->detach($work);
        $this->order->refresh();  //refreshed, but relationship query duplicated
        $this->tempTotal();
    }

public function render()
    {
        return view('livewire.order.view-order', ['worklist' => $this->order->worklist]);
    }
{

Screenshoot of duplicated query if use $model->refresh(): duplicated

is there any workaround to refresh relationship collection without full page refresh or refresh with $model->refresh() without duplication of query? thanks

0 Answers
Related