Laravel Livewire: после любого вызова метода мой массив обнуляется

#laravel #laravel-livewire

#laravel #laravel-livewire

Вопрос:

Итак, у меня есть компонент livewire, который имеет два свойства a $viewedJob и $jobs который представляет собой набор заданий, с которыми связаны $viewedJob . моя логика такова. Когда вы нажимаете на задание, это задание становится $viewedJob легкой задачей.

поэтому я настроил метод livewire для выполнения логики

 public function viewJob($jobId) 
{
    $this->viewedJob = Job::find($jobId);
    $this->jobs = $this->jobs;
}
 

и внутри моего интерфейса я называю это так

 <button wire:click="viewJob({{$job}})" class="truncate">
    {{$job->title}}
</button>
 

МОЯ ПРОБЛЕМА

проблема в том, что всякий viewJob раз, когда вызывается метод, $jobs массив обнуляется, каждый человек внутри него становится нулевым, и я получаю эту ошибку

введите описание изображения здесь

я также пытался ничего не делать внутри viewJob и все равно получал ту же ошибку

 public function viewJob($jobId) 
{
    // although i dont do anything, i still get the same error!!
}
 

любые идеи помогут, спасибо за ваше время.

Комментарии:

1. Было бы полезно, если бы вы показали еще немного своего кода, его довольно сложно отладить, воспроизвести проблему или точно определить проблему с тем, что у вас есть в данный момент — я почти уверен, что это где-то еще в вашем коде (возможно, связано с некоторым повторным отображением или повторным увлажнением).. Но есть одна вещь — $this->jobs = $this->jobs; ничего не делает? Устанавливать задания для себя?

2. Опубликуйте код, который выдает ошибку. Часть, в которой вы пытаетесь показать свойство owner в вашем представлении.

Ответ №1:

если ваш интерфейс-код находится в цикле переменной $jobs, вам следует попробовать это.

 <button wire:click="viewJob({{$job->id}})" class="truncate">
    {{$job->title}}
</button>
 

если это не работает, вы должны превратить свою коллекцию $jobs в массив, например:

 $this->jobs = Job::all()->toArray();
 

и во внешнем интерфейсе вы можете написать, как:

 <button wire:click="viewJob({{$job['id']}})" class="truncate">
    {{$job['title']}}
</button>
 

Я надеюсь, что это сработает. Мой ответ основан на том, что ваш интерфейсный код находится внутри цикла.