array_diff() ожидает, что параметр один будет заданной строкой массива

#laravel

Вопрос:

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

МОЙ КОД

 $products = api call to get product names
 

// Мои продукты бд

 $pro = Products::all()->toArray();

$result = array_diff($pro,$products);

foreach($result as $r)
{
$r->delete()
}
 

в основном я пытаюсь удалить продукт из своей локальной базы данных, если он был удален из вызова api, который я выполняю для

Вызов api возвращает мне массив имен продуктов, и мой вызов бд делает то же самое, но это будет другая проблема, если столбцы не совпадают

моя главная проблема-это упомянутая

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

1. Почему бы вам просто не попытаться использовать уникальный столбец для сопоставления и поиска различий вместо этого, и в случае, если вы получаете какие-либо ошибки, поделитесь трассировкой стека, чтобы найти проблему более простым способом

2. Проблема все та же, метод array_diff рассматривает ее как строку

3. Вы пробовали выполнить var_dump $products проверку, чтобы увидеть, является ли это массивом? если это действительно строка типа typeof, то, может быть, это поможет включить код, который обрабатывает этот запрос, или попытаться преобразовать его в массив / развернуть строку? p.s если ваш комментарий «вызов api для получения названий продуктов» на самом деле является тем, что он вам дает (имена), то ваш $r->удалить() не сработает

4. Ошибка довольно очевидна — $pro или $products это не массив. Вам нужно исследовать это и выяснить, что это такое.

5. я проверил его тип с помощью функции GetType, и он показывает массив, отличный от того, что я нашел, это коллекция, которую я спрашиваю, как использовать ее в методе array_diff()