Błąd Cannot access offset of type string on string

0

Cześć, mam taki kod, i powoduje on u mnie błąd Cannot access offset of type string on string. Nie mogę znaleŹć rozwiązania tego problemu bo nie wiem gdzie jest błąd, ale podejrzewam że jest on w drugim argumencie funkcji where(). Byłbym wdzięczny jeśli ktoś pomógłby mi rozwiązać ten problem.

        $user = $this->User::findOrFail($id);
        $lastName = $model->lastName;
        $result = (array)$lastName;

        $variable = Class::where($result, fn($item) => $item['value'] === true);

0

Problem związany jest z drugim argumentem funkcji where(). Drugi argument funkcji where() powinien być tablicą, w której kluczami są nazwy kolumn, a wartościami są poszukiwane wartości. Zamiast tablicy, używasz zmiennej $result, która jest typu string, a co za tym idzie, nie może być użyta jako indeks tablicy.
Użycie wartości $lastName jako nazwy kolumny, musisz zmienić sposób, w jaki tworzysz tablicę asocjacyjną. Zamiast rzutowania na tablicę (array)$lastName, możesz utworzyć nową tablicę asocjacyjną i dodać do niej $lastName jako klucz, a wartością dla tego klucza będzie true.

$result = [$lastName => true];
$variable = Class::where($result, fn($item) => $item['value'] === true);

Zmienna $result będzie tablicą asocjacyjną z jednym kluczem $lastName, który będzie miał wartość true. Możesz użyć tej zmiennej jako drugiego argumentu w funkcji where().

1

Wrzuć może większą ilość kodu bo tak:

$user = $this->User::findOrFail($id); // user jest nie użyty 
        $lastName = $model->lastName;// co jest w zmiennej model? 
        $result = (array)$lastName;// tym bardziej jak nie wiadomo co tu jest to po co cast?

        $variable = Class::where($result, fn($item) => $item['value'] === true); // nie używaj słów kluczowych do nazw klas/ modeli (claas)

1 użytkowników online, w tym zalogowanych: 0, gości: 1