#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()